亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        “軟件工程”網絡課程的設計與開發(fā)

        2009-09-06 06:26:48黃河笑楊煥宇陳海建鄭任兒
        計算機教育 2009年22期
        關鍵詞:網絡課程軟件工程案例

        黃河笑 楊煥宇 陳海建 王 磊 鄭任兒

        摘要 :本文論述了在設計與開發(fā)“軟件工程”網絡課程中采用的基于案例的教學內容設計,該教學設計以同一個案例貫穿所有章節(jié),增進了學生對知識點的掌握和理解;開發(fā)環(huán)境使用Dorado MVC架構(Struts+Hibernate+Spring),獲得了好的效果。與傳統(tǒng)的開發(fā)模式比較,這種開發(fā)模式最大的優(yōu)勢在于可以節(jié)省開發(fā)人員在開發(fā)Web應用表現層時的工作量,同時又為用戶提供非常友好的交互界面。

        關鍵詞 :網絡課程;案例;樹型結構

        中圖分類號:G642 文獻標識碼:B

        1引言

        在開放教育和遠程教育中,網絡教學正被越來越多地使用,開發(fā)適用于網絡教學的高質量的網絡課程已經成為發(fā)

        展網絡教育的一個非常重要的課題。

        《現代遠程教育技術標準體系和11項試用標準(簡介)》中對網絡課程進行了定義。網絡課程是通過網絡表現的某門學科的教學內容及實施的教學活動的總和,它包括兩個組成部分:按一定的教學目標、教學策略組織起來的教學內容和網絡教學支撐環(huán)境。

        “軟件工程”課程是本科計算機專業(yè)的一門重要課程。在當前的教學中,特別是開放教育和遠程教育中還存在著很多欠缺,案例太少,或者各章中的案例相互割裂,使得學生學完該課程之后無法形成整體的軟件工程概念和思想。因此設計和開發(fā)貫穿整個教學過程的案例成為“軟件工程”網絡課程的必然選擇。

        2 “軟件工程”網絡課程的教學內容設計

        2.1以案例為中心

        當前的計算機相關專業(yè)實踐教學環(huán)境存在諸多薄弱環(huán)節(jié),特別是在軟件工程教學中,很難為學生提供一個全面的感性認識。而當前的教學是離散的過程,沒有提供一個完整的商業(yè)軟件的實例來講解商業(yè)軟件開發(fā)的全部過程。經過調查研究、綜合對比和專家論證,我們選擇了某

        軟件公司的商務軟件“應急系統(tǒng)”作為整個軟件工程網絡課程的案例。選擇該軟件的原因是該系統(tǒng)在Windows平臺上基于C++開發(fā),而C++是大部分計算機科學與技術專業(yè)的學生都學習過的第四代開發(fā)平臺,不足的地方是部分學生不了解應急系統(tǒng)。在教學內容設計中我們先對此公司“應急系統(tǒng)”的相關知識作了簡單介紹,然后把軟件工程的各個階段與該軟件的相關內容進行了一一映射和組合,公開了大部分相關設計和源代碼。

        2.2兼顧面向過程和面向對象

        當前軟件設計與開發(fā)的手段一般采用面向過程和面向對象這兩種方法。雖然“應急系統(tǒng)”是采用面向對象方法設計的,但是我們補充了面向過程的設計內容,這樣學生通過比較,既能熟悉和了解面向過程和面向對象的設計方法,又增強了理解,從而獲得了比較好的教學效果。

        3網絡課程支撐環(huán)境的設計

        3.1總體結構

        系統(tǒng)設計應由上而下進行。首先設計總體結構,然后再逐層深入,直至進行每一個模塊的設計??傮w設計主要是在系統(tǒng)分析的基礎上,將整個系統(tǒng)劃分為若干子系統(tǒng),子系統(tǒng)則由若干模塊組成。數據的存儲以及整個系統(tǒng)實現等方面都進行了合理的安排。圖1所示為“軟件工程網絡”課程開發(fā)與設計的總體結構圖。

        3.1系統(tǒng)開發(fā)平臺——Dorado MVC架構

        Dorado全稱“Dorado Web應用開發(fā)套件”,包含:Dorado Web UI控件集及UI引擎(Dorado Web UI Components and UI Engine),Dorado可視化集成開發(fā)工具 (Dorado Studio),Dorado MVC開發(fā)框架和Dorado Web應

        用框架。其中Dorado MVC開發(fā)框架的主要功能有:提供類似Struts的MVC開發(fā)框架,以便更加方便地利用Dorado套件進行基于MVC架構的開發(fā);提供性能監(jiān)控控制臺,可以方便地對系統(tǒng)運行過程中各功能點的運行效率進行統(tǒng)計和分析;支持國際化資源配置;支持模塊化配置。Dorado MVC開發(fā)框架是一個可選件。Dorado套件完全支持各種第三方開發(fā)框架,如Struts、WebWork等。我們利用Dorado與目前較為流行的Struts+Hibernate+Spring進行協(xié)同開發(fā)。

        3.2系統(tǒng)主要模塊算法與設計

        (1) 集合混淆算法

        客觀題測試用于學生自測。題目是隨機排列的,順序與數據庫的存儲順序不同,它使用了Java.util.Collections中的shuffle(Listlist)方法來實現,下面是其在JDK 6.0中的算法和代碼。

        使用指定的隨機源隨機更改指定列表的序列。所有序列更改發(fā)生的可能性都是相等的,假定隨機源是公平的。

        此實現向后遍歷列表,從最后一個元素向前一直到第二個元素,將隨機選擇的元素重復交換到“當前位置”。元素是從列表中隨機選擇的,從第一個元素運行到當前位置。

        此方法以線性時間運行。如果指定列表沒有實現RandomAccess接口并且是一個大型列表,則此實現在改組列表前將指定列表轉儲到該數組中,并將改組后的數組轉儲回列表中。這避免了二次型行為,該行為是因為在適當位置改組一個“有序訪問”列表而引起的。

        private static Random r;

        public static void shuffle(Listlist) {

        if (r == null) {

        r = new Random();

        }

        shuffle(list, r);

        }

        public static void shuffle(Listlist, Random rnd) {

        int size = list.size();

        if (size < SHUFFLE_THRESHOLD || list instanceof RandomAccess) {

        for (int i=size; i>1; i--)

        swap(list, i-1, rnd.nextInt(i));

        } else {

        Object arr[] = list.toArray();

        // Shuffle array

        for (int i=size; i>1; i--)

        swap(arr, i-1, rnd.nextInt(i));

        // Dump array back into list

        ListIterator it = list.listIterator();

        for (int i=0; i

        it.next();

        it.set(arr[i]);

        }

        }

        }

        (2)DES加密算法

        由于客觀題的隨機排列,使得試題的排列次序與數據庫中有所不同。同時,考慮到通過逐條在數據庫中查詢來校驗答案對數據庫的壓力過大,所以事先查詢出試題的答案,然后根據打亂后的試題次序把正確答案拼成一個字符串,然后加密放到頁面的隱藏域中。這樣一來,當提交試題查看結果時不用再次查詢數據庫,只要把答案字符串解密,然后分割成數組校驗即可。

        這里的加解密采用了DES算法。

        DES算法的入口參數有三個:Key、Data、Mode。其中Key為8字節(jié)共64位,是DES算法的工作密鑰;Data也為8字節(jié)64位,是要被加密或被解密的數據;Mode為DES的工作方式,有兩種:加密或解密。

        DES算法是這樣工作的:如Mode為加密,則用Key去把數據Data進行加密,生成Data的密碼形式(64位)作為DES的輸出結果;如Mode為解密,則用Key去把密碼形式的數據Data解密,還原為Data的明碼形式(64位),作為DES的輸出結果。在通信網絡的兩端,雙方約定一致的Key,在通信的源點用Key對核心數據進行DES加密,然后以密碼形式在公共通信網(如電話網)中傳輸到通信網絡的終點。數據到達目的地后,用同樣的Key對密碼數據進行解密,便再現了明碼形式的核心數據。這樣便保證了核心數據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。

        下面是加密算法的部分代碼(解密原理類似):

        public class DesEncrypt {

        private Key key;

        /**

        * 根據參數生成KEY

        *

        * @param strKey

        */

        public void getKey(String strKey) {

        try {

        KeyGenerator _generator = KeyGenerator. getInstance("DES");

        _generator.init(new SecureRandom (strKey.getBytes()));

        this.key = _generator.generateKey();

        _generator = null;

        } catch (Exception e) {

        e.printStackTrace();

        }

        }

        /**

        * 加密 String明文輸入,String密文輸出

        *

        * @param strMing

        * @return

        */

        public String getEncString(String strMing) {

        byte[] byteMi = null;

        byte[] byteMing = null;

        String strMi = "";

        BASE64Encoder base64en = new BASE64Encoder();

        try {

        byteMing = strMing.getBytes("UTF8");

        byteMi = this.getEncCode(byteMing);

        strMi = base64en.encode(byteMi);

        } catch (Exception e) {

        e.printStackTrace();

        } finally {

        base64en = null;

        byteMing = null;

        byteMi = null;

        }

        return strMi;

        }

        /**

        * 解密 以String密文輸入,String明文輸出

        *

        * @param strMi

        * @return

        */

        public String getDesString(String strMi) {

        BASE64Decoder base64De = new BASE64Decoder();

        byte[] byteMing = null;

        byte[] byteMi = null;

        String strMing = "";

        try {

        byteMi = base64De.decodeBuffer(strMi);

        byteMing = this.getDesCode(byteMi);

        strMing = new String(byteMing, "UTF8");

        } catch (Exception e) {

        e.printStackTrace();

        } finally {

        base64De = null;

        byteMing = null;

        byteMi = null;

        }

        return strMing;

        }

        (3) 章節(jié)維護算法

        本網絡課程中的課程章節(jié)、目錄均為樹形結構,其數據模型采用了樹的模型,然后通過遞歸從根開始逐層遍歷顯示每個節(jié)點,便于導航學生學習。

        下面是顯示樹形結構的代碼,由于樹形結構的顯示使用了ExtJs(Ajax)框架來渲染,所以代碼最終將產生JavaScript代碼的字符串,交由ExtJs框架完成最后顯示工作。

        public String getExtTreeString(String prexHref ,String target ,boolean allowEdit ) {

        ......

        //查詢根節(jié)點(包含子節(jié)點層次)

        Course rootWithHierarchy = treeNodeDao. getTreeRootWithHierarchy();

        StringBuffer rootInfo = new StringBuffer();

        //構造ExtJs的樹形代碼

        appendInfo(rootWithHierarchy , rootInfo);

        StringBuffer treeInfo = new StringBuffer("new Ext. tree.AsyncTreeNode(" + Constants.PLACEHOLDER + rootInfo + ")");

        return ExtUtil.formatExtStr(treeInfo);

        }

        private void appendInfo(Course node , StringBuffer buf){

        if(node == null) return ;

        //如果是葉子節(jié)點,構造葉子信息

        if(node.getIsLeaf()) appendLeaf(node,buf);

        //如果是目錄,構造目錄信息

        else appendFolder(node , buf);

        }

        private void appendFolder(Course node , StringBuffer buf){

        buf.append(",{text:'" + node.getText() + "',");

        if(allowEdit){

        buf.append("href:'"+prexHref+node.getId()+"',");

        buf.append("hrefTarget:'" + target + "',");

        }

        buf.append("id:'" + node.getId() + "',");

        buf.append("leaf:false,");

        buf.append("children:[" + Constants.PLACEHOLDER);

        //遍歷子節(jié)點,構造子節(jié)點信息

        for(Course child: node.getChildren()){

        appendInfo(child , buf);

        }

        buf.append("]}");}

        private void appendLeaf(Course node , StringBuffer buf){

        buf.append(",{text:'" + node.getText() + "',");

        buf.append("id:'" + node.getId() + "',");

        buf.append("iconCls:'user',");

        buf.append("href:'"+prexHref + node.getId() + "',");

        buf.append("hrefTarget:'" + target + "',");

        buf.append("leaf:true");

        buf.append("}");

        }

        從上述代碼中可以看出,首先找出(包含子節(jié)點信息的)根節(jié)點,然后通過appendInfo方法來產生ExtJs的JavaScirpt代碼,appendInfo會根據節(jié)點類型(葉子或目錄)來調用appendLeaf或appendFolder方法,其中appendFolder首先生成該目錄的信息,然后逐個顯示子節(jié)點信息,子節(jié)點又會調用appendInfo方法。就是這樣遞歸的調用,形成了最終的字符串,然后通過服務器傳到表現層,通過ExtJs來顯示整棵樹。

        4結束語

        我們在設計和開發(fā)“軟件工程”網絡課程時,采用基于案例的教學內容設計,同一個案例貫穿所有章節(jié),增強了學生對知識點的掌握和理解。開發(fā)環(huán)境采用Dorado MVC架構(Struts+Hibernate+Spring),獲得了好的效果。這種開發(fā)模式與傳統(tǒng)MVC的開發(fā)模式比較,其最大的優(yōu)勢在于可以節(jié)省開發(fā)人員在開發(fā)Web應用表現層式的工作量,同時又為用戶提供非常友好的交互界面。

        從表1中可以看出,本文采用的方法在開發(fā)工作量、用戶界面、軟件可擴展性等三個方面都具有相當大的優(yōu)勢。

        本網絡課程的設計和開發(fā)是從教學內容和網絡教學支撐環(huán)境兩個方面展開的,已在教學中使用一年,收到了較好的教學效果。特別是課程章節(jié)采用樹型結構,使得學生在自主學習的過程中獲得了更好的導航效果,提高了學習效率。下一步的工作是多增加藝術性方面的內容,尤其是媒體素材設計方面。

        參考文獻:

        [1] 林惠強,劉財興,林丕源. “軟件工程”課程啟發(fā)式教學的研究與實踐[J]. 計算機教育,2008(11):40-42.

        [2] 佚名. Dorado與Strats、Hibernare、Spring的集成開發(fā)模式[EB/OL]. [2009-6-10].http://www.javaeye.com/topic/141135.

        猜你喜歡
        網絡課程軟件工程案例
        案例4 奔跑吧,少年!
        少先隊活動(2021年2期)2021-03-29 05:40:48
        隨機變量分布及統(tǒng)計案例拔高卷
        發(fā)生在你我身邊的那些治超案例
        中國公路(2017年7期)2017-07-24 13:56:38
        虛擬化技術在計算機教學中的應用
        網絡課程設計中學習動力培養(yǎng)策略研究
        高校思政課網絡教育陣地開辟的探索與研究
        依托工作室的軟件工程實踐教學研究
        基于工程教育認證的《軟件工程》課程教學質量建設研究 
        軟件導刊(2016年9期)2016-11-07 22:31:23
        淺析混合學習模式下的教師培訓網絡課程設計策略
        文教資料(2016年19期)2016-11-07 11:12:15
        關于提高軟件工程實踐教學質量的幾點思考
        午夜一区欧美二区高清三区| 纯肉无遮挡H肉动漫在线观看国产| 国产亚洲精品国产福利在线观看| 久久av一区二区三区下| 一区二区三区日本视频| 久久久99精品免费视频| 国产精品久久久久aaaa| 无码人妻精品一区二区三18禁| 国产九九在线观看播放| 亚洲中文字幕亚洲中文| 99精品国产一区二区三区| 久久狠狠爱亚洲综合影院| 日本做受高潮好舒服视频| 亚洲AV无码未成人网站久久精品| av资源在线播放网站| 日韩中文字幕素人水野一区| 日本久久久久亚洲中字幕| 欧美国产一区二区三区激情无套| 精品中文字幕制服中文| 福利视频自拍偷拍视频| 国产一区二区三区我不卡| 久久久精品人妻一区二区三区妖精| 国产无夜激无码av毛片| 最好看的最新高清中文视频| 狠狠色丁香婷婷久久综合2021| 国产激情在线观看视频网址| 久久久精品视频网站在线观看| 欲香欲色天天天综合和网| 97se狠狠狠狠狼鲁亚洲综合色| 中国丰满熟妇xxxx| 国产国拍亚洲精品永久69| 好看的中文字幕中文在线| 久久久精品久久久久久96| 国产成人精品123区免费视频| 调教在线播放黄| 亚洲一区二区三区视频免费| 色佬精品免费在线视频| 亚洲av日韩av无码污污网站| 亚洲欧美日韩中文字幕网址| 成年女人18毛片观看| 亚洲av无码专区国产乱码4se|