金 浩 彭遠(yuǎn)媛
摘 要:隨著信息技術(shù)的發(fā)展及其在教學(xué)中的應(yīng)用,網(wǎng)絡(luò)學(xué)習(xí)已經(jīng)成為信息社會(huì)重要的學(xué)習(xí)方式之一,而優(yōu)質(zhì)的網(wǎng)絡(luò)課程是學(xué)習(xí)得以有效、順利進(jìn)行的前提性保障。然而,網(wǎng)絡(luò)課程的開發(fā)已遠(yuǎn)遠(yuǎn)區(qū)別于傳統(tǒng)意義上的課程開發(fā),此時(shí),如何構(gòu)建優(yōu)質(zhì)的網(wǎng)絡(luò)課程就成為網(wǎng)絡(luò)學(xué)習(xí)能否有效進(jìn)行的瓶頸。本文借助軟件工程學(xué)中的構(gòu)件理論,從開發(fā)者的角度對(duì)網(wǎng)絡(luò)課程的設(shè)計(jì)、開發(fā)和復(fù)用進(jìn)行了重新探討,以期為網(wǎng)絡(luò)課程探尋新的開發(fā)方式,提高網(wǎng)絡(luò)課程的開發(fā)效率和復(fù)用程度,進(jìn)而為網(wǎng)絡(luò)學(xué)習(xí)質(zhì)量提供有效的保障。
關(guān)鍵詞:軟件工程學(xué) 構(gòu)件理論 網(wǎng)絡(luò)課程 設(shè)計(jì) 開發(fā)
中圖分類號(hào):G250.73 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1673-8454(2009)15-0060-03
在信息社會(huì),網(wǎng)絡(luò)學(xué)習(xí)作為主要的學(xué)習(xí)方式已經(jīng)是我們的共識(shí),而網(wǎng)絡(luò)課程是網(wǎng)絡(luò)學(xué)習(xí)得以有效、順利進(jìn)行的保障,不僅“教育目標(biāo)要通過(guò)網(wǎng)絡(luò)課程來(lái)實(shí)現(xiàn),教學(xué)活動(dòng)圍繞網(wǎng)絡(luò)課程而開展”,更重要的是,網(wǎng)絡(luò)課程作為學(xué)習(xí)資源的關(guān)鍵組成部分貫穿于整個(gè)學(xué)習(xí)過(guò)程之中。[1]然而,在網(wǎng)絡(luò)課程的開發(fā)過(guò)程中卻面臨著亟待解決的問(wèn)題,其中,對(duì)于開發(fā)人員來(lái)說(shuō),如何實(shí)現(xiàn)網(wǎng)絡(luò)課程系統(tǒng)的可復(fù)用性問(wèn)題尤為突出,隨之而來(lái)的是網(wǎng)絡(luò)課程各功能模塊的深入分析、整體測(cè)試和后期維護(hù)等等,這些問(wèn)題的解決有賴于新的設(shè)計(jì)開發(fā)理論的指導(dǎo),構(gòu)件理論無(wú)疑為我們解決這一問(wèn)題提供了很好的途徑。
一、構(gòu)件理論的發(fā)展
構(gòu)件(Component)思想的提出源自軟件和硬件兩方面的因素。在硬件方面,著名的摩爾定律說(shuō)明了其發(fā)展的迅猛勢(shì)態(tài),但軟件的開發(fā)速度卻遠(yuǎn)遠(yuǎn)落后于硬件的更新速度;在軟件應(yīng)用方面,軟件的模式從單機(jī)模式、C/S(客戶機(jī)/服務(wù)器)模式一直到B/S(瀏覽器/服務(wù)器)模式,軟件設(shè)計(jì)正面臨著一系列新的課題,傳統(tǒng)的軟件思想顯然已遠(yuǎn)遠(yuǎn)不夠。就在此時(shí),構(gòu)件思想應(yīng)運(yùn)而生。
1.構(gòu)件的概念與特征
關(guān)于構(gòu)件的定義可謂莫衷一是,不同的組織和研究者把構(gòu)件和軟件構(gòu)件作為同一概念使用,并給出了各自的定義,具有代表性的有以下四類:(1)軟件構(gòu)件是一個(gè)具有規(guī)范接口和明確的上下文依賴的組裝單元。軟件構(gòu)件能夠被獨(dú)立地部署和被第三方組裝;(2)軟件構(gòu)件是可單獨(dú)生產(chǎn)、獲取、部署的二進(jìn)制單元,它們之間可以互相作用構(gòu)成一個(gè)功能系統(tǒng);(3)構(gòu)件是一個(gè)帶有契約化接口和顯示上下文依賴的組裝單元,它能被獨(dú)立發(fā)布;(4)軟件構(gòu)件是一個(gè)可以獨(dú)立交付的軟件單元,封裝了設(shè)計(jì)和實(shí)現(xiàn)的內(nèi)容,并向外提供接口,通過(guò)接口與其他構(gòu)件組裝成更大的整體。[2]
盡管以上的定義不盡相同,綜合之后我們發(fā)現(xiàn),其具有共同的因素:構(gòu)件是一個(gè)功能單元;符合構(gòu)件模型(或具有規(guī)范接口);允許對(duì)不同構(gòu)件開發(fā)商開發(fā)的構(gòu)件進(jìn)行組裝。這些因素將為我們的開發(fā)提供重要的參考價(jià)值。
在了解了構(gòu)件的內(nèi)涵之后,我們需要明確構(gòu)件的基本特征,這將有助于我們更清楚地理解構(gòu)件的本質(zhì)。構(gòu)件的特征主要有以下四方面:(1)構(gòu)件是可獨(dú)立配置的單元,因此構(gòu)件必須自包容;(2)構(gòu)件強(qiáng)調(diào)與其他構(gòu)件和環(huán)境的分離,因此構(gòu)件的實(shí)現(xiàn)是嚴(yán)格封裝的,外界沒(méi)有機(jī)會(huì)或沒(méi)有必要知道構(gòu)件內(nèi)部的實(shí)現(xiàn)細(xì)節(jié);(3)構(gòu)件可以在適當(dāng)?shù)沫h(huán)境中被復(fù)用,因此構(gòu)件需要提供清晰的接口規(guī)范,可以與環(huán)境交互;(4)構(gòu)件不應(yīng)當(dāng)是持續(xù)的,即構(gòu)件沒(méi)有個(gè)體特有的屬性。[3]
2.構(gòu)件與模塊的異同
論及構(gòu)件時(shí)我們不能不提的一個(gè)概念就是模塊,構(gòu)件與模塊之間究竟有何異同,這是我們?cè)谟懻摶跇?gòu)件的軟件開發(fā)時(shí)不可不明確的一個(gè)問(wèn)題?;谀K化的軟件開發(fā)是面向過(guò)程開發(fā)時(shí)代提出來(lái)的,并且這一思想主要是針對(duì)用戶而言,不涉及開發(fā)人員的具體工作,因而并不涉及軟件復(fù)用的思想。當(dāng)然,從模塊化的思想中我們可以依稀看到一些與構(gòu)件理論相通的理念:使軟件系統(tǒng)的功能明確化、結(jié)構(gòu)清晰,便于維護(hù)人員后期的維護(hù)工作等等。
構(gòu)件理論是在面向?qū)ο髸r(shí)代提出的,從前述構(gòu)件思想產(chǎn)生的過(guò)程我們可以看出,構(gòu)件是針對(duì)軟件開發(fā)速度達(dá)不到需求和軟件的復(fù)雜性日益增大而提出的,是針對(duì)開發(fā)人員的,因此構(gòu)件所要解決的問(wèn)題首先是復(fù)用,其次是降低軟件開發(fā)的復(fù)雜度??梢钥吹?模塊是構(gòu)件提出之前理解軟件結(jié)構(gòu)的一種方式,而構(gòu)件則是針對(duì)復(fù)用而提出的一種開發(fā)方式。
3.構(gòu)件的獲取
構(gòu)件的獲取是實(shí)現(xiàn)構(gòu)件開發(fā)的基礎(chǔ)和前提,只有擁有組成系統(tǒng)所必須的構(gòu)件,在開發(fā)系統(tǒng)時(shí)才能快速地實(shí)現(xiàn)組裝,或者僅開發(fā)部分的功能,然后組裝已有的構(gòu)件從而構(gòu)成所需的完整系統(tǒng)。那么,如何獲取構(gòu)件呢?一般來(lái)說(shuō)構(gòu)件的獲取主要有以下四種途徑:(1)從專有構(gòu)件庫(kù)中獲取預(yù)定義的構(gòu)件,這無(wú)疑是最快捷的方式,但需要軟件開發(fā)機(jī)構(gòu)有預(yù)先為構(gòu)件專門建立的庫(kù),當(dāng)需要時(shí)直接查找?guī)熘械臉?gòu)件提出應(yīng)用;(2)從外部廠商購(gòu)買相關(guān)的構(gòu)件,現(xiàn)有的商業(yè)化條件下有專門為一定應(yīng)用開發(fā)的構(gòu)件,只要支付相應(yīng)的費(fèi)用就可獲得;(3)專門開發(fā)的構(gòu)件,這種雖類似從零開始開發(fā)而獲取構(gòu)件的方法,但卻為以后的復(fù)用建立了基礎(chǔ);(4)從已有的軟件系統(tǒng)中提取適用的構(gòu)件,盡管這樣獲取構(gòu)件復(fù)雜且難度較大,但卻是一種非常經(jīng)濟(jì)的方式。
相應(yīng)地,在網(wǎng)絡(luò)課程開發(fā)中,我們也可以按照上述獲取構(gòu)件的途徑來(lái)得到符合需要的網(wǎng)絡(luò)課程構(gòu)件。其中,后兩種方式應(yīng)該是網(wǎng)絡(luò)課程開發(fā)人員所主要關(guān)注的。同時(shí),為了后續(xù)復(fù)用的便利,將構(gòu)件分類歸屬之后建立網(wǎng)絡(luò)課程所需的構(gòu)件庫(kù)也是非常好的選擇。
二、基于構(gòu)件開發(fā)網(wǎng)絡(luò)課程的優(yōu)勢(shì)
構(gòu)件技術(shù)在軟件開發(fā)中的優(yōu)勢(shì)是顯而易見(jiàn)的,不僅可以使復(fù)用得以按照開發(fā)人員的意愿實(shí)現(xiàn),從而減輕了軟件開發(fā)的難度、縮短開發(fā)周期,更重要的是使得軟件工廠成為可能,軟件的流水線開發(fā)不再是遙不可及的夢(mèng)想。網(wǎng)絡(luò)課程作為在Internet上運(yùn)行的軟件系統(tǒng),其開發(fā)同樣需要軟件工程學(xué)的指導(dǎo),構(gòu)件理論的引入無(wú)疑也為網(wǎng)絡(luò)課程的開發(fā)提供了一條新的途徑,使得網(wǎng)絡(luò)課程開發(fā)效率上升到一個(gè)新的水平。
1.接口規(guī)范,便于組裝復(fù)用
構(gòu)件作為一種新興的思想引入到軟件工程學(xué)領(lǐng)域之初,其最大的目的就是實(shí)現(xiàn)軟件的工業(yè)化開發(fā),即軟件部分實(shí)現(xiàn)可復(fù)用。軟件工程學(xué)認(rèn)為:一個(gè)軟件“應(yīng)用功能的60%~70%和其他軟件應(yīng)用的功能相同;40%~60%的代碼在其他的軟件應(yīng)用中是可以復(fù)用的;60%的設(shè)計(jì)在其他的軟件應(yīng)用中也是可以復(fù)用的”。[4] 然而要使得復(fù)用得以實(shí)現(xiàn),除了構(gòu)件本身適應(yīng)平臺(tái)和環(huán)境的能力外,最大的障礙就是標(biāo)準(zhǔn)的形成,即構(gòu)件必須符合一定的標(biāo)準(zhǔn),最簡(jiǎn)單的理解就是程序接口、數(shù)據(jù)格式要遵從一定的規(guī)范。
在網(wǎng)絡(luò)課程開發(fā)過(guò)程中,要使得課程的構(gòu)件得以復(fù)用,也必須符合一定的接口規(guī)范,這樣在構(gòu)件組裝時(shí)就可以實(shí)現(xiàn)無(wú)縫耦合。我國(guó)試行的《現(xiàn)代遠(yuǎn)程教育資源建設(shè)技術(shù)規(guī)范》為網(wǎng)絡(luò)課程中涉及的人員、素材、過(guò)程等都提供了一定的規(guī)范描述,開發(fā)者可以參考其中的規(guī)定進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì)、程序部分的開發(fā)和頁(yè)面規(guī)格的設(shè)定,當(dāng)需要實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)課程時(shí),只需查看構(gòu)件外部的接口參數(shù),進(jìn)行簡(jiǎn)單的組裝即可完成。
2.單元微型,便于分析和實(shí)現(xiàn)
網(wǎng)絡(luò)課程作為一個(gè)結(jié)構(gòu)龐大的軟件系統(tǒng),要實(shí)現(xiàn)相關(guān)功能的設(shè)計(jì)是非常復(fù)雜的,從學(xué)生的學(xué)籍管理到教師的教務(wù)管理,從最初的學(xué)習(xí)目標(biāo)設(shè)定到最終的學(xué)習(xí)結(jié)果評(píng)價(jià),從豐富內(nèi)容的提供到多樣的媒體選擇,涉及學(xué)生、教師、管理人員對(duì)系統(tǒng)的使用,包括了數(shù)據(jù)庫(kù)、開發(fā)技術(shù)、美工設(shè)計(jì)等工作,對(duì)于網(wǎng)絡(luò)課程的開發(fā)團(tuán)隊(duì)來(lái)說(shuō)完成一門高質(zhì)量的網(wǎng)絡(luò)課程是十分不易的事。而構(gòu)件理論的提出,為解決這一問(wèn)題提供了很好的途徑。
構(gòu)件的提出使得網(wǎng)絡(luò)課程的開發(fā)可以先基于微型單元實(shí)現(xiàn),整個(gè)網(wǎng)絡(luò)課程可以分解為一個(gè)個(gè)內(nèi)部相互獨(dú)立、外部依靠標(biāo)準(zhǔn)接口相耦合的單元,然后分別開發(fā),最后只要依據(jù)接口規(guī)范加以組裝就可完成。這樣既便于各單元的深入分析,以獲取詳細(xì)的需求信息,同時(shí)也利于開發(fā)人員實(shí)現(xiàn)程序。例如,對(duì)于學(xué)籍管理構(gòu)件單元,可以全面分析學(xué)習(xí)者個(gè)體的屬性,抽象為個(gè)體數(shù)據(jù)字段;深入分析學(xué)習(xí)者作為群體中的一員,可能與其他學(xué)習(xí)者、教師、管理人員進(jìn)行交互所需的屬性,抽象為關(guān)聯(lián)數(shù)據(jù)字段。這樣的分析利于數(shù)據(jù)庫(kù)中表的建立和開發(fā)時(shí)程序的實(shí)現(xiàn)。
3.功能明確,便于測(cè)試與維護(hù)
任何一個(gè)獨(dú)立的構(gòu)件都是具有明確功能的,這樣不僅便于開發(fā),更為測(cè)試和后期維護(hù)提供了方便。軟件測(cè)試的重要性隨著軟件規(guī)模的擴(kuò)大越來(lái)越多得到重視,甚至在軟件開發(fā)周期中作為一個(gè)獨(dú)立的階段被提出,而與此同時(shí),測(cè)試的難度也逐漸暴露。但當(dāng)我們明確系統(tǒng)某個(gè)單元的功能時(shí),測(cè)試便相對(duì)容易,此時(shí)無(wú)論采用黑盒測(cè)試還是白盒測(cè)試,測(cè)試員的目的是明確的,相應(yīng)的工作量也將減少。同樣,軟件維護(hù)的重要性也隨著軟件規(guī)模的擴(kuò)大而日益突顯,對(duì)于維護(hù)人員,他們可能不是軟件的直接開發(fā)者,即使在有文檔的情況下,要全面而準(zhǔn)確地理解軟件的設(shè)計(jì)開發(fā)也是比較困難的,因此,維護(hù)的困難也成為制約軟件正常運(yùn)行的一個(gè)關(guān)鍵因素。然而,在基于構(gòu)件的開發(fā)中,由于各個(gè)構(gòu)件都是具有獨(dú)立配置的單元,所以作為整體的軟件系統(tǒng)具有良好的可維護(hù)性。
對(duì)于一個(gè)完整的網(wǎng)絡(luò)課程而言,測(cè)試和維護(hù)同樣是困擾測(cè)試人員和維護(hù)人員的難題。但是基于構(gòu)件的開發(fā),由于其構(gòu)件內(nèi)部良好的自包容性使單元測(cè)試相對(duì)容易,進(jìn)而降低了整體測(cè)試的難度。例如需要測(cè)試網(wǎng)絡(luò)課程的學(xué)籍管理功能時(shí),首先作為單獨(dú)構(gòu)件的測(cè)試保證了學(xué)籍管理內(nèi)部的正確性,其次具有規(guī)范接口的外部特性也方便網(wǎng)絡(luò)課程的整體測(cè)試。在網(wǎng)絡(luò)課程使用過(guò)程中,維護(hù)人員往往不是課程系統(tǒng)的開發(fā)人員,例如需要對(duì)學(xué)籍管理功能進(jìn)行適應(yīng)性維護(hù),添加階段性測(cè)試結(jié)果的統(tǒng)計(jì)功能,維護(hù)人員可能要在大量數(shù)據(jù)字段和復(fù)雜的頁(yè)面調(diào)用之間查找學(xué)生的學(xué)籍屬性,更改數(shù)據(jù)表,重寫顯示代碼,添加傳遞參數(shù)等等,但如果是基于構(gòu)件的開發(fā),維護(hù)將容易實(shí)現(xiàn),只需要在學(xué)籍管理構(gòu)件內(nèi)修改數(shù)據(jù)表,然后添加相應(yīng)顯示參數(shù)即可,而不必考慮復(fù)雜的關(guān)聯(lián)過(guò)程。
三、基于構(gòu)件理論的網(wǎng)絡(luò)課程開發(fā)舉例——答疑系統(tǒng)構(gòu)件的設(shè)計(jì)
答疑系統(tǒng)在網(wǎng)絡(luò)課程中有非常重要的作用,不僅對(duì)于學(xué)生學(xué)習(xí)專業(yè)知識(shí)和師生之間情感的交流具有巨大的幫助,對(duì)不斷完善網(wǎng)絡(luò)課程的工作亦具有重要意義。在以往的網(wǎng)絡(luò)課程設(shè)計(jì)中,習(xí)慣于將答疑功能作為一個(gè)單獨(dú)的系統(tǒng)實(shí)現(xiàn),如圖1(a)所示,這樣的開發(fā)不能實(shí)現(xiàn)答疑模塊的復(fù)用,同時(shí)也使得整個(gè)網(wǎng)絡(luò)課程系統(tǒng)龐大而復(fù)雜。[6]
從圖1的對(duì)比中,我們可以看到,答疑功能作為構(gòu)件設(shè)計(jì)的變化主要有兩點(diǎn):一是系統(tǒng)外部接口。在設(shè)計(jì)開發(fā)時(shí)確保構(gòu)件接口數(shù)據(jù)遵循一定的規(guī)范,這樣在實(shí)現(xiàn)系統(tǒng)時(shí)就只需要組裝構(gòu)件,共用登錄模塊,而不再單獨(dú)開發(fā)登錄模塊。目前我國(guó)試行的《現(xiàn)代遠(yuǎn)程教育資源建設(shè)技術(shù)規(guī)范》可作為一個(gè)參考的標(biāo)準(zhǔn),學(xué)習(xí)者、教師、管理者的數(shù)據(jù)只要符合該規(guī)范,在開發(fā)其他網(wǎng)絡(luò)課程時(shí)只需要修改處理數(shù)據(jù),就能使用答疑構(gòu)件。二是系統(tǒng)內(nèi)部的數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)的存儲(chǔ)不再作為一個(gè)單獨(dú)的數(shù)據(jù)庫(kù)存在,而是轉(zhuǎn)化為數(shù)據(jù)庫(kù)中的部分?jǐn)?shù)據(jù)文件,只要在開發(fā)過(guò)程中,這些數(shù)據(jù)文件符合標(biāo)準(zhǔn)SQL的語(yǔ)法,在任何一種數(shù)據(jù)庫(kù)平臺(tái)上都可以良好地運(yùn)行。
四、結(jié)束語(yǔ)
網(wǎng)絡(luò)課程開發(fā)不僅需要教育教學(xué)理論的指導(dǎo),同時(shí)也需要軟件工程學(xué)相關(guān)理論的指導(dǎo),要求開發(fā)人員既理解教育又具備技術(shù)技能,只有這樣才能開發(fā)出優(yōu)質(zhì)的網(wǎng)絡(luò)課程。我們?cè)诰邆淞艘欢ń逃虒W(xué)理論的基礎(chǔ)上,試圖在軟件開發(fā)理論和方法上尋求新的途徑,以使網(wǎng)絡(luò)課程的開發(fā)更加達(dá)到教育教學(xué)的目標(biāo),同時(shí)也更符合作為軟件系統(tǒng)的技術(shù)要求。構(gòu)件理論及技術(shù)在網(wǎng)絡(luò)課程開發(fā)中的應(yīng)用正是我們這一探索的結(jié)果。
參考文獻(xiàn):
[1]林君芬,余勝泉.關(guān)于我國(guó)網(wǎng)絡(luò)課程現(xiàn)狀與問(wèn)題的思考[J].現(xiàn)代教育技術(shù),2001(2):55.
[2]王志賢,費(fèi)玉奎,婁淵清.軟件構(gòu)件技術(shù)及應(yīng)用[M].北京:科學(xué)出版社,2005:9.
[3]鐘珞.現(xiàn)代軟件工程學(xué)[M].北京:國(guó)防工業(yè)出版社,2004:129.
[4][美]Carma McClure.王亞沙,謝冰,趙俊峰等譯.軟件復(fù)用標(biāo)準(zhǔn)指南[M].北京:電子工業(yè)出版社, 2004:6.
[5]謝康寧,謝百治,李冰.網(wǎng)絡(luò)課程答疑系統(tǒng)的研究與實(shí)現(xiàn)[J].中國(guó)醫(yī)學(xué)教育技術(shù), 2005(5):238.