張清春
基于構件技術的教務管理系統設計與實現
張清春
軟件復用是將已有的軟件成分用于新的軟件系統的構造,可以被重復使用的軟件成分稱為可復用構件。研究軟件復用技術在教務管理系統開發過程各個階段的設計應用,分析并設計一個教務管理系統分層模型的軟件架構,根據軟件工程方法和理論,結合教務管理工作流程的特點,提出了在教務管理系統領域軟件適合構件縱向復用,實現了在教務管理系統軟件開發中在不同層次應用構件復用技術,有效地提高軟件開發的效率、可靠性,縮小開發周期和維護成本。
軟件復用;基于構件的軟件開發(CBSD);可復用軟件構件;教務管理;分層模型
張清春/福建第二輕工業學校講師(福建福州 350007)。
軟件復用是軟件技術發展一個非常重要的領域,無論是函數過程封裝代碼,還是宏技術,在不同層面對軟件代碼復用發揮重要作用。軟件復用構件技術主要包含兩個方面,一是功能的抽象定義,二是構件復用代碼的封裝。構件本身的研發過程與大多數應用軟件研發過程相似,一般步驟包含軟件構件的需求分析、設計模型、編寫程序代碼、測試用例以及編寫使用文檔等過程[1],構件技術最終目的就是為了實現軟件復用(Software Reuse)。軟件復用是提高軟件開發效率和降低維護成本的有效技術手段,構件設計應滿足以復用、封裝、粒度、層次[2]等幾個方面要求。
軟件復用根據應用領域可分為水平(橫向)復用和垂直(縱向)復用[3]。橫向復用是指在不具有公共性的應用領域間的軟件元素,如數據結構、排序算法等元素。縱向復用是在同一類具有公共性的應用領域之間復用軟件構件,縱向復用的關鍵在于應用領域分析,由此確定軟件的可復用構件。
領域分析是通過對一類應用系統的公共性進行分析,找出應用系統的公共知識和公共需求以及公共特征,確定復用功能,建立分析模型。本文通過對教務管理系統軟件進行領域分析研究得出,教務管理知識領域按學校類別可分為:中小學教務管理、中職院校教務管理、高職院校教務管理、獨立院校教務管理、高校教務管理等,具有較多的公共性,學校的教務管理領域的工作流程和對象具有教育教學應用領域的共性,與其他企業或行業的管理應用領域的共性較少,因此屬于軟件復用的縱向復用。
分析教務管理系統工作流程和對象。第一步,首先確立對象分類,學校教務管理系統的使用者主要由系統管理員、教學管理人員、教師、學生等對象構成組成;第二步,建立教務管理數據庫,存儲教學教務的相關基本信息;第三步,建立功能對象,對象與學校教務以工作類別相對應,按照一定的工作流程規則設定功能模塊;第四步,設置工作流程,使得教務管理信息依照學校教學管理規程設置的流程執行;第五步,數據庫數據維護和報表打印。
中小學教務管理、中職院校教務管理、高職院校教務管理、獨立院校教務管理、高校教務管理等教務管理系統軟件框架結構基本相同,由教務管理基本信息(主要有學生基本情況、院系(年級)、教師、課程、排課、質量檢查、考試安排等信息)、教務管理工作任務(主要有學生注冊、安排不同專業班級的學生的課程及時間地點、安排不同班級不同課程的考試時間地點及監考人員、根據課程預訂教材、學生成績管理、教學質量的考核與評定等)、有關報表(根據教務信息和工作任務按特定的格式要求生成報表輸送到打印機打印或導出為EXCEL文件,如教學運行表、課程表、考試表等)和數據庫管理維護(學生信息、教師信息、系或年級信息、教材庫、考務、排課、教學質量等)四個主要組成部分。通過研究,本文設計了教務管理系統軟件的應用領域縱向復用框架模型如圖1所示。

圖1 教務管理系統縱向復用框架模型Fig 1 the educational administration management system framework model
遵循軟件工程分層體系結構的設計原則[4],本文將教務管理系統體系結構自上而下并結合復用程度劃分為四個層次,最頂層為表示層(UI模型層),是系統的用戶界面模型,應支持不同的訪問模式;第二層為業務模型層,系統的核心功能實現層,工作流程的邏輯業務在該層實現。第三層數據模型層,該層把系統的業務數據的讀寫從業務邏輯中分離出來,該層主要是對數據庫的定義和讀寫操作,對用戶是透明的,應有利于系統的維護和擴充;第四層系統層,應用開發平臺及各種類庫,包括OS、DBMS。體系結構的每一層應用構件元素應遵循分層獨立設計的原則,盡量把各層之間耦合度降低,減少各層相互影響。
一個特定的教務管理系統軟件首先是由各層中的功能模塊組裝而成。然后根據對各層具體功能邏輯分析來確定構件系統框架。因此,構件劃分的粒度大小直接影響構件的復用,小粒度的構件易于設計,通用范圍較廣,大粒度的構件易于設計,復用范圍較小,適用的范圍受到限制。因此需要對系統中構件的粒度做適當的規劃,本文將表示層和業務層中與管理相關的構件采用大粒度劃分,因為系統界面對于各種教務管理系統而言而,相似之處較多,無需大修改即可使用;各個學校教務管理流程有細微的差別,業務邏輯的構件過細粒度會導致構件組裝復雜,不同類型的學校教務管理流程不盡相同,但是同類的學校流程基本一致,如各個高校或中小學,因此也可采用大粒度劃分。而位于底層的構件用小粒度劃分。

圖2 教務管理系統的層次模型架構Fig 2 the educational administration management system Hierarchical model architecture
軟件構件是一種可組裝與軟件的單元,它具有規范的接口約束和顯式的語境依賴,軟件構件可以被獨立部署并由第三方任意組裝。當前軟件業界最具有代表性、應用最廣的三個構件技術規范(標準)分別是:微軟的構件對象模型(COM)、對象管理組織(OMG)的公共對象的請求代理體系結構(CORBA)和 EJB(Enterprise Java Bean)[5]。這三種構件標準實現的構件是基于對象接口的互相依賴方式。
Microsoft ActiveX Data Objects(ADO)[6]是微軟提供對各種數據格式(包括關系和非關系)的高層接口(high-level interface),由于ADO是使用微軟提供的OLE技術對數據庫服務器中的數據進行訪問操作,ADO支持常用的數據庫系統,而無需額外的不同類型的數據庫驅動程序的支持,可訪問任何與ODBC兼容的數據庫。另外ADO在系統開銷與數據訪問速度方面都有很好的指標。基于以上原因,本文在構件設計中采用ADO架構建立構件與數據庫之間的連接和訪問。
對“教材信息維護”構件分析,該構件主要功能是對數據庫中教材表的記錄信息進行增刪改查的操作,并實現數據的導入和導出。因此該構件接口的參數應該有三個:一個參數提供用戶確定數據庫的連接,一個參數用于提供確定數據庫名稱,一個參數用于確定教材表名稱。在delphi中設計一個Activex Form,使用Delphi自帶組件ADO數據庫控件用于設置數據庫、表的連接和數據顯示,命令按鈕控件編寫代碼實現對數據的增刪改代碼實現以及做一個類來實現EXCEL數據的導入導出。接口是提供構件使用者進行組裝、設計中使用。因此在構件設計中自定義Connectiongstring屬性、databasenamestring、Tablenamestring屬性,供用戶在組裝構件時提供構件與管理系統外部程序的接口。
以本文設計的教材信息維護構件為例,設計數據庫名接口參數屬性:

這樣我們就為即將生成的ActiveX form自定義控件,添加了一個字符串類型的屬性databasenamestring,用于設定構件的數據庫名屬性設置。
在Delphi中編譯生成OCX文件后,要想讓其他外部程序調用,則必須OCX文件注冊發布到Windows消息系統中。由于OCX是是OLE技術的控件擴展,而OCX文件本質上與EXE,DLL文件類似,都是屬于PE格式的文件,當OCX文件注冊到系統后,只要支持OCX文件的開發平臺如Delphi、VISUAL STUDIO都可以調用該構件,從而達到復用構件的目的。
單一的構件難以在軟件開發過程中實現的有效復用,必須要求構件達到一定的數量供開發人員選擇。因此,采用構件庫對構件進行組織和管理是一種有效的技術手段,可用于存儲、檢索、瀏覽和管理可復用構件。構件庫的一般工作流程首先對構件的進行描述(構件名稱、構件類型、構件編號,構件功能說明,構件接口說明等)及分類;然后經過測試(黑盒、白盒測試)后存儲構件信息到構件庫,提供用戶對構件的有效檢索(精確或模糊)界面,從構件庫中搜索出適合的構件;根據用戶使用后給出反饋信息和專家評估對構件庫進行信息修改,以使構建信息描述更為準確。

本文通過對教務管理系統軟件的領域規劃和設計分析,系統按分層構架來設計,降低了軟件各組成部分的耦合度,每個層可以被相對獨立的開發。對于具體邏輯關系數據流程采用在教務管理系統的業務邏輯層實現較大粒度的構件設計,在數據層和系統層實現粒度較小的構件設計并實現了一個“教材信息維護”構件,對構件庫進行初步的管理應用。
:
[1]林銘德,戴一景.可復用構件技術在工程造價軟件開發的研究[J].計算機技術與發展,2011,21(5):111-114
[2]楊芙清,梅宏,李克勤.軟件復用與軟件構件技術[J].電子學報,1999,27(2):68-77
[3]常聚川,張敏,陳菲.基于構件的煤礦安全監察管理信息系統設計與實現[J].軟件導刊,2012,11(12):87-89
[4]覃征.軟件工程與管理[M].北京:清華大學出版社,2005:322-323
[5]李嘉炎.面向構件框架的研究與設計 [J].電腦知識與技術2009,5(13):3430-3431
[6]陳慧,王中慶.基于ADO的組態軟件與關系數據庫通信研究[J].工業控制計算機,2012,25(4):74-75
TP31
A
1671-6531(2013)16-0152-02
責任編輯:姚 旺