【摘要】本文針對當前英語課件開發存在的主要問題,結合英語課件的特點,提出了基于Flex的英語課件開發的RIA技術解決方案。并著重描述了其中最關鍵的數據模型的設計與實現,以期為同類技術開發提供思路和借鑒。
【關鍵詞】英語課件 Flex RIA
一、引言
隨著信息技術的發展與國內高校教學信息化的逐步深入,多媒體輔助教學課件的應用及其相關研究探索也隨之逐步擴大和加深。在外語教學領域,多媒體課件的使用尤其廣泛和深入。這其中的原因亦不難理解,相對于傳統的黑板教學,多媒體課件通過成熟的網絡技術和信息技術提供了諸如圖片、音頻、視頻和動畫等更豐富的教學資源,對于學生的外語聽說能力學習起到了不可忽視的重要作用。
目前國內以英語為主的外語多媒體教學課件,一般由英語教學專家進行教學設計、軟件開發人員設計開發,并由出版社或教育軟件公司以光盤為媒介出版發行。其作為一種桌面應用程序,響應速度快,資源豐富,以復雜多樣的交互手段結合文字、聲音、圖片及視頻等媒體素材模擬有利于英語學習的各種交際情境。然而筆者通過對國內多個出版社發行的英語課件調研后發現,現有英語課件由于開發技術較為落后,系統設計不夠合理等原因,其開發過程或多或少都存在如下一些問題:1、可復用性低?,F有大部分英語課件的開發技術并不支持面向對象開發方法,或僅對面向對象提供較低級的支持,從而導致程序代碼的可復用性較低。2、可維護性差。英語課件學習內容規模龐大,用戶運行環境復雜,課件在開發和使用的過程中出問題的可能性非常大?,F有大部分英語課件開發技術缺少對面向對象的支持,同時也缺少軟件工程思想和方法的應用,因此維護升級均為較困難。3、開發成本高。現有英語課件采用的開發技術大多為針對具體內容的一次性開發。隨著課件需求的增加和交互復雜性的提高,這種開發方式的弊端逐漸暴露出來,開發周期越來越長,成本越來越高。
基于上述分析,筆者認為尋求新的技術解決方案以合理的解決英語課件的上述問題,已成為課件開發者們亟待解決的重要問題。而隨著富互聯網應用(RIA,Rich Internet Applications)的發展,各種RIA技術的不斷出現為英語課件的開發提供了有效且可行的技術路線和解決方案。其中Adobe Flex作為用于開發RIA客戶端的主流技術,其構建的RIA應用提供內容豐富的用戶界面,且完全支持面向對象的開發,完全符合課件開發的需求。
本文首先簡要介紹Flex開發框架,之后對在整個系統中最重要的數據模型設計與實現做詳細介紹,最后對該開發技術的應用效果進行總結和歸納。
二、Flex和Cairngorm框架
Adobe Flex是Adobe公司開發的支持RIA開發和部署的集成開發環境,主要面向企業級的開發。它采用ActionScript 3作為核心編程語言,并被編譯成swf文件運行于FlashPlayer虛擬機里。ActionScript 3是一種強大的面向對象的編程語言,基于ECMAScript Language Specification, Third Edition①。Flex是目前RIA客戶端開發技術的主流,它提供了豐富的控件和功能強大的基礎類庫。利用Flex我們可以很容易的開發和部署RIA應用。
Cairngorm框架是在Adobe Labs(Adobe ,2006)發布的一款開源輕量級RIA開發框架。Cairngorm框架由Value Object、ModelLocator、View、Front Controller、Command、Delegate六個模塊組成,按照數據模型、用戶視圖以及控制邏輯對程序代碼進行分類②。其執行過程簡要描述如下:FrontController負責監聽事件,當事件發生時,FrontController調用Command對象執行相關操作。Command對象調用Execute方法訪問服務,最后由onResult方法處理返回的結果,異常信息則由onFault方法處理。View通過綁定機制根據ModelLocator中的數據創建用戶界面,當ModelLocator中數據被修改時,數據綁定機制將負責更新視圖。
三、英語課件數據模型設計與實現
由于數據模型包含了英語課件中所有的學習內容,關系著課件最主要功能的實現,是系統設計的核心,因此,本文將著重討論這一部分內容。一套英語課件通常分為8-10個單元,每個單元可能包括課文學習、單詞學習、選擇題、填空題、匹配題、判斷題、翻譯題、寫作題、電影欣賞、音樂欣賞、看圖說話等大量學習內容。這些學習內容包含了大量的文字、圖片、聲音、視頻等各種數據,并且由于題型眾多,交互邏輯和界面表現復雜,采用面向內容的一次性開發方式常常導致課件程序規模龐大而復雜。
同時,我們注意到每個單元雖然學習內容不同,但學習內容的組織結構基本相同,即每個單元包含了相同的題型,因此每種題型的實現代碼在課件不同單元中均可復用。此外,即使是不同的英語課件,學習內容結構不同,但題型仍然具有相對穩定性,故每種題型的實現代碼在不同課件間亦可復用。另一方面,對于不同的練習題型,有時也具有非常相似的數據格式以及交互邏輯。由此可見,對各種題型的可復用結構進行合理抽取,是提高課件代碼可復用性的關鍵。
基于上述分析,我們首先設計所有題型的基類ExerciseModel。其中,課文學習和單詞學習也分別作為題型的一種。ExerciseModel僅簡單的記錄了題型基本信息。通過添加其它數據類型可以派生出各種具體題型。其具體設計見表1:
表1 ExerciseModel類功能表
完成基類的定義之后,根據不同題型所需的不同數據對象,從ExerciseModel類派生該題型子類的辦法即可實現不同的題型。由于英語課件題型眾多,不可能一一列舉,下面我們分別以具有代表性的課文學習和填空題來闡述具體學習內容的設計。
1、課文學習
TextModel類繼承自ExerciseModel類,實現課文學習這部分課件內容。TextModel類包含課文題目、課文作者、每個段落的內容和翻譯、生詞、背景知識等數據,其中每個段落的數據由TextItem類保存和傳遞。TextModel類添加Title和Author屬性記錄課文題目與作者,同時TextItem類保存每個段落的數據模型,其功能設計見表2。
表2 TextItem類功能表
此外,每個屬性均有對應的Get、Add和Remove三個方法實現該屬性的獲取、添加和刪除。例如,保存課文內容的Para屬性可調用GetPara、AddPara和RemovePara方法,分別實現獲取、添加和刪除課文的操作。以課文生詞為例,其實現代碼如下:
private function init(evt:FlexEvent):void {
var nw:TextArea=FormItem(evt.currentTarget).itemTextArea as TextArea;
nw.htmlText = txt;
nw.selectable = true;
lbl.addEventListener(TextEvent.LINK,nw _link);
2、填空題
填空題包含習題題干、參考答案、提示信息等數據。提供評測、創建和還原用戶學習數據備忘錄等接口。其中評測為課件提供多種自動評測策略,比如:帶首字母的評測、不帶首字母評測等。用戶學習數據備忘錄對象用于保存用戶答案、評測情況等。
FillBlankModel類定義為填空題的數據模型。它由FillBlankItem類構成,FillBlankItem類對應填空題的每個Question的數據模型,需要保存題干、參考答案和用戶答案等數據以及評測接口。此外,FillBlankModel類和FillBlankItem類都提供備忘錄模式,以XML格式保存用戶的答題和評測情況。同時通過重載CairngormError實現CheckStrategy類作為評測策略基類,提供抽象接口Check()。FillBlankCheck類繼承CheckStrategy基類,實現Check()接口,提供單個小題評測的能力。FillBlankItem類設計見表3。
表3 FillBlankItem類功能表
與TextModel類相同,FillBlankModel類的每個屬性均有對應的Get、Add和Remove三個方法實現該屬性的獲取、添加和刪除。FillBlankModel類主要代碼簡化如下:
//打包填空題模型XML
override public function get Data():XML
{
……
//初始化填空題模型
override public function set Data(Value:XML):void
{
……
//處理屬性_CheckStrategy=CheckStrategyManager.GetInstance().GetStrategy(Value.questions.@checkType);
_IsQuestionCheck= Value.questions.@isQuestionCheck.toLowerCase()== \"true\";
//處理小題
var questionsList:XMLList=Value.questions.question;
……
}
每個小題的數據模型FillBlankItem類主要代碼簡化如下:
//生成answers節點
var answers:XML=;
……
//初始化本小題數據
public function set Data(Value:XML):void{
……
if(XMLUtilities.HasNode(Value,\"answers\")){
……
//處理提示
if(XMLUtilities.HasNode(Value,\"tips\"))
……
//處理單詞短語框
private function parseContent():void
……
四、應用效果分析
采用Adobe Flex和Cairngorm框架進行英語課件的設計與開發具有很強的優勢。首先,具有較高的可復用性。一方面通過定義英語課件的架構及通用模型,便于在后續的開發中重復利用;另一方面實現了程序與源文件分離,這樣不僅可以重復利用英語課件的多媒體素材和腳本數據,而且還可以通過替換源文件來重復利用代碼。其次,具有較好的可維護性。通過在開發過程中運用軟件工程的思想和方法,遵循高內聚、低耦合的開發原則,實現課件的模塊化開發,使得程序代碼結構清晰,可讀性好,便于為后續維護或二次開發提供相應接口,提高了英語課件的可維護性。
當然,該解決方案也有一定的弊端。主要在于其采用的設計模式對可復用結構進行了較高層次的抽象,同時各個模塊間嚴格遵循高內聚、低耦合的開發原則,導致系統的實現難度大大提高。因此,在實際開發過程中,應根據具體情況對此進行良好地平衡,以盡可能降低開發代價。■
參考文獻
①Adobe. 2001.Adobe Flex[EB/OL].Adobe Labs. http://labs.adobe.com/technologies/flex/
②Digimmersion.2006.Flex Application Design for Cairngorm[EB/OL]. http://www.digimmersion.com
(作者單位:中國科學技術大學現代教育技術中心)
責編:姚少寶