基于構件的軟件開(kāi)發(fā)實踐

2018-05-12 13:51:50


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

  基于構件的軟件開(kāi)發(fā)(CBSD)通過(guò)整合已有的構件來完成(chéng)大型軟件系統的開(kāi)發(fā),其核心就(jiù)是構件級的可重用。CBSD通過(guò)提高系統的可擴展性和可維護性來減少軟件開(kāi)發(fā)的費用,更快的整合系統,并能(néng)有效的降低大型系統的維護和升級壓力。應用系統的軟件構造過(guò)程包括分析構件、設計構件、實現構件和組裝構件。

  CBSD的理論基礎是在大型軟件系統中有相當的部分會(huì)重複出現,這(zhè)些共同的部分應該通過(guò)構件組合起(qǐ)來,而不是一遍一遍的重寫。

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

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

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

二、系統的實現

  

  ()系統中的構件實現

  軟件工程網絡課堂教學(xué)系統的開(kāi)發(fā)環境爲前台開(kāi)發(fā)選擇ASP,後(hòu)台采用SQL Server 2000數據庫,構件模型通過(guò)B/S構架的三層體系結構(表示層、業務邏輯層和數據訪問層)實現。

  現以課件構件的開(kāi)發(fā)過(guò)程爲例,說明一個構件中的用戶界面(miàn)/表示層、功能(néng)/業務邏輯層和數據訪問層的實現。

  1.課件上傳構件的用戶界面(miàn)層實現。表示層的用戶界面(miàn)可分成(chéng)動态和靜态兩(liǎng)種(zhǒng)。通過(guò)Dreamweave的模闆實現靜态界面(miàn)功能(néng),通過(guò)ASP技術生成(chéng)動态頁面(miàn)。動态頁面(miàn)中常見的動作是:解釋用戶請求;分發(fā)這(zhè)些請求到相應的業務邏輯;選擇下一個顯示視圖;生成(chéng)和傳送下一個視圖給用戶。

  2.課件上傳構件的功能(néng)/業務邏輯層實現。課件上傳的業務邏輯層的作用是將(jiāng)用戶上傳的文件存入數據庫,并將(jiāng)與文件相關的說明在用戶界面(miàn)層上顯示出來。出于系統安全性的考慮,在構件設計時,對(duì)文件格式進(jìn)行了限制,隻能(néng)上傳RAR壓縮文件,并按照上傳時間以++++秒”的數字組合爲文件重新命名,這(zhè)將(jiāng)有效避免文件重名。

  該層實現上使用VBScript腳本語言構造了一個類模塊(add.asp)。該類包括如下屬性:MMtitle(課件标題)MMteacher(上傳用戶(系統自動生成(chéng)))MMunit(所屬章節)MMdiscrib(内容說明)set upload(上傳路徑)set file(存儲路徑(系統自動生成(chéng)))

  3.課件上傳構件的數據訪問層實現。在系統數據庫的開(kāi)發(fā)過(guò)程中,爲了方便今後(hòu)數據庫的維護與重用,將(jiāng)其具體功能(néng)如查詢、插入等操作封裝到一個構件(kejian.asp)中。

    ()基于構件的系統組裝

  1.原子構件的組裝。現以課件上傳構件爲例,說明原子構件的組裝過(guò)程。原子構件組裝的思想是將(jiāng)構件模型中涉及到的三個層次組裝成(chéng)構件。通過(guò)原子構件的組裝,以上用戶界面(miàn)、功能(néng)/業務和數據訪問三個層次的成(chéng)分組合成(chéng)一個完整的課件上傳構件。

  在上述三個構件中,功能(néng)/業務層處于用戶界面(miàn)層之下、數據訪問層之上,因此以功能(néng)/業務層構件add.asp作爲組裝的基礎。其具體組裝過(guò)程爲:將(jiāng)用戶界面(miàn)層構件module.aspVBScript腳本進(jìn)行引用。引用語句爲:!--#include file="module.asp"--

  數據訪問層調用采用面(miàn)向(xiàng)對(duì)象方式,將(jiāng)類FileInfo和類upload_file

  通過(guò)内部接口與類kejian組裝成(chéng)一個高内聚低偶合的原子構件,再通過(guò)外部接口與功能(néng)構件add.asp連接。

  2.複合構件的組裝。複合構件是由多個原子構件組裝後(hòu)形成(chéng)的獨立構件,封裝在文件夾中,構件之間既沒(méi)有數據上的耦合,也沒(méi)有行爲上的耦合,故采用黑盒方法進(jìn)行組裝。在組裝時,通過(guò)接口綁定建立複合構件組裝的外部接口和内部接口的對(duì)應關系。通過(guò)各種(zhǒng)不同的連接件可以完成(chéng)一些複雜的接口綁定,以實現所需的複合構件。複合構件的外部接口采用擴展連接件。由于擴展連接件據具有可擴展的特性,由其組裝成(chéng)的複合構件也具有可擴展的特性,同時内部接口是基于消息傳遞的,從而使組裝出來的複合構件具有動态性。

  本系統中複合構件有公告發(fā)布管理構件、課件發(fā)布管理構件、作業發(fā)布批閱構件、作業下載提交構件、在線測試構件、試題管理構件、學(xué)習論壇構件和消息交流構件。其功能(néng)都(dōu)封裝在獨立的文件夾中,其外部接口爲各自文件夾下的index.asp頁面(miàn)。在該頁面(miàn)的功能(néng)菜單中給出了不同的功能(néng)按鈕,連接構件的内部接口。