摘 要: 傳統(tǒng)教學(xué)法重理論輕實(shí)踐,不適合計(jì)算機(jī)編程類課程的教學(xué),為此將特征驅(qū)動(dòng)開發(fā)(FDD)方法引入到ASP.NET程序設(shè)計(jì)課程的實(shí)訓(xùn)中,并根據(jù)實(shí)際情況加以調(diào)整,形成了一種較為實(shí)用的實(shí)踐課程教學(xué)法。該方法將實(shí)訓(xùn)分為五個(gè)階段,分別是:開發(fā)總體模型、構(gòu)造功能列表、根據(jù)功能制定計(jì)劃、根據(jù)功能進(jìn)行設(shè)計(jì)、根據(jù)功能進(jìn)行開發(fā)測(cè)試。實(shí)踐表明,該方法更能有效地提高學(xué)生的動(dòng)手編程能力、團(tuán)隊(duì)合作能力等。
關(guān)鍵詞: 特征驅(qū)動(dòng)開發(fā); ASP.NET; 教學(xué)改革; 實(shí)訓(xùn)模式
中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2013)03-54-02
0 引言
ASP.NET作為微軟面向下一代的企業(yè)級(jí)Web應(yīng)用系統(tǒng)開發(fā)平臺(tái),被大多數(shù)高校的計(jì)算機(jī)專業(yè)選為專業(yè)必修課。但是,很長(zhǎng)一段時(shí)間以來,ASP.NET課程的授課基本都是教師按照順序講授知識(shí)點(diǎn),學(xué)生按部就班地學(xué)習(xí)知識(shí)點(diǎn),而體驗(yàn)不到所學(xué)的局部知識(shí)的真正用處。雖然在教學(xué)中也會(huì)給出一些小的案例或小項(xiàng)目,但是對(duì)于整個(gè)課程來說,這些小案例或項(xiàng)目之間是孤立無聯(lián)系的,導(dǎo)致學(xué)生掌握的知識(shí)也是零散且不系統(tǒng)的,缺乏對(duì)課程的整體把握。
針對(duì)ASP.NET課程實(shí)踐性強(qiáng)的特點(diǎn),近幾年國(guó)內(nèi)一些軟件學(xué)院積極開展了工程教育改革探索和實(shí)踐,如將案例教學(xué)法、項(xiàng)目驅(qū)動(dòng)教學(xué)法、任務(wù)驅(qū)動(dòng)教學(xué)法等引入了ASP.NET的課程教學(xué)中[1]。從2010年開始,我們開始嘗試基于FDD敏捷開發(fā)思想的ASP.NET課程教學(xué)模式改革,已取得了階段性成果。
1 項(xiàng)目驅(qū)動(dòng)式教學(xué)法簡(jiǎn)介
特征驅(qū)動(dòng)開發(fā)(FDD-Feature Driven Development)方法是敏捷軟件開發(fā)過程中的一種,是由Jeff de Luca、Eric Lefebvre、Peter Coad共同開發(fā)的[2]。FDD強(qiáng)調(diào)特性驅(qū)動(dòng)和快速迭代,既能保證快速開發(fā),又能保證適當(dāng)文檔和質(zhì)量,非常適合中小型團(tuán)隊(duì)的開發(fā)管理。它提出每個(gè)功能的開發(fā)時(shí)間不超過兩周,并為每個(gè)用例user case限定了粒度,具有良好的可執(zhí)行性,也可以對(duì)項(xiàng)目的開發(fā)進(jìn)程進(jìn)行精確、及時(shí)的監(jiān)控。FDD方法抓住了軟件開發(fā)中如何正確和及時(shí)地構(gòu)造軟件的核心問題,打破了傳統(tǒng)的將分析師與設(shè)計(jì)者和實(shí)現(xiàn)者隔離開來的壁壘,使分析師從抽象的工作中解脫出來,直接參與到開發(fā)人員和用戶所從事的系統(tǒng)構(gòu)造工作中。
2 FDD在ASP.NET實(shí)訓(xùn)中的實(shí)施過程
經(jīng)過幾年的教學(xué)摸索應(yīng)用,結(jié)合特征驅(qū)動(dòng)開發(fā)的基本思想,并根據(jù)實(shí)際情況加以改進(jìn),我們?cè)O(shè)計(jì)了一種基于FDD的ASP.NET實(shí)訓(xùn)教學(xué)方法。該方法將實(shí)訓(xùn)分為五個(gè)階段,分別是:開發(fā)總體模型、構(gòu)造功能列表、根據(jù)功能制定計(jì)劃、根據(jù)功能進(jìn)行設(shè)計(jì)、根據(jù)功能進(jìn)行開發(fā)測(cè)試。
2.1 開發(fā)總體模型
首先要組建一個(gè)團(tuán)隊(duì),參與到FDD 方法過程的角色主要有三種:業(yè)務(wù)專家、首席架構(gòu)師和主程序員。在ASP.NET實(shí)訓(xùn)課程開始之前,首先讓學(xué)生自由組隊(duì),每個(gè)團(tuán)隊(duì)的人數(shù)限制在6-8人之間,并推薦一個(gè)具有一定技術(shù)和管理能力的學(xué)生作為首席架構(gòu)師。業(yè)務(wù)專家由教師擔(dān)任,對(duì)于班級(jí)人數(shù)比較多的情況,可考慮邀請(qǐng)助教、研究生等參與。他們作為客戶代表有對(duì)產(chǎn)品提出任何需求的權(quán)利。
組建團(tuán)隊(duì)完成后,在開發(fā)總體模型階段的主要任務(wù)包括:
⑴ 組建建模團(tuán)隊(duì);
⑵ 業(yè)務(wù)分析;
⑶ 開發(fā)業(yè)務(wù)模型;
⑷ 內(nèi)部和外部評(píng)估。
2.2 構(gòu)造功能列表
本階段的基本目標(biāo)是確定所有用于支持需求的功能列表。主要任務(wù)包括:
⑴ 組建功能分解小組;
⑵ 建立功能列表。
2.3 根據(jù)功能制定計(jì)劃
本階段的基本目標(biāo)是產(chǎn)生一個(gè)開發(fā)計(jì)劃。項(xiàng)目經(jīng)理、開發(fā)經(jīng)理和主程序員根據(jù)功能的相關(guān)性、開發(fā)小組的工作負(fù)荷以及功能的復(fù)雜性,計(jì)劃實(shí)現(xiàn)功能的優(yōu)先級(jí)。
該階段的主要任務(wù)包括:
⑴ 組建計(jì)劃小組;
⑵ 確定開發(fā)優(yōu)先級(jí);
⑶ 為主程序員分配功能集;
⑷ 為開發(fā)人員分配類。
2.4 根據(jù)功能進(jìn)行設(shè)計(jì)
本階段的基本目標(biāo)是每一個(gè)功能集都產(chǎn)生一個(gè)功能的設(shè)計(jì)包。一定數(shù)量的功能通過分配給主程序員被列入開發(fā)時(shí)間表。主程序員從分配給他的任務(wù)中選出功能進(jìn)行開發(fā)。
該階段的主要任務(wù)包括:
⑴ 成立功能小組;
⑵ 開發(fā)順序圖;
⑶ 精化對(duì)象模型;
⑷ 編寫類和方法的序言。
2.5 根據(jù)功能進(jìn)行開發(fā)測(cè)試
該階段開發(fā)人員以特征為單位進(jìn)行開發(fā)、單元測(cè)試,主程序員進(jìn)行代碼審查,對(duì)通過審查的代碼進(jìn)行構(gòu)建。
該階段的主要任務(wù)包括:
⑴ 實(shí)現(xiàn)類和方法;
⑵ 代碼檢查;
⑶ 單元測(cè)試;
⑷ 構(gòu)建。
3 教學(xué)效果
基于FDD的實(shí)訓(xùn)方法已在我們學(xué)院連續(xù)實(shí)施了三個(gè)學(xué)期,在ASP.NET課程的及格率、學(xué)生的評(píng)價(jià)等方面均有所提高。另外,因?yàn)檐浖こ虒I(yè)學(xué)生的畢業(yè)設(shè)計(jì)題目絕大多數(shù)也是完成某軟件系統(tǒng)的開發(fā),所以本課程成績(jī)高的學(xué)生,其畢業(yè)設(shè)計(jì)的成績(jī)一般也較高。教學(xué)效果的統(tǒng)計(jì)數(shù)據(jù)如表1所示。
4 結(jié)束語
傳統(tǒng)教學(xué)法已經(jīng)不能適應(yīng)ASP.NET課程實(shí)踐性強(qiáng)的特點(diǎn),為此探討了FDD方法在ASP.NET課程實(shí)訓(xùn)中的應(yīng)用,提出了一種較為實(shí)用的實(shí)訓(xùn)教學(xué)方法。該方法將實(shí)訓(xùn)分為五個(gè)階段:開發(fā)總體模型、構(gòu)造功能列表、根據(jù)功能制定計(jì)劃、根據(jù)功能進(jìn)行設(shè)計(jì)、根據(jù)功能進(jìn)行開發(fā)測(cè)試。經(jīng)實(shí)踐檢驗(yàn),使用該方法后,學(xué)生的學(xué)習(xí)成績(jī)得到了提高,畢業(yè)設(shè)計(jì)成績(jī)也相應(yīng)提高。在取得效果的同時(shí),我們也發(fā)現(xiàn)了一些現(xiàn)象,例如在開發(fā)小組內(nèi)部,有些學(xué)生自覺性較差,基本依靠同組的其他學(xué)生,如何調(diào)動(dòng)并激勵(lì)這些學(xué)生的積極性,是我們以后要重點(diǎn)解決的問題。
參考文獻(xiàn):
[1] 教育部軟件工程學(xué)科課程體系研究課題組.中國(guó)軟件工程學(xué)科教程[M].
清華大學(xué)出版社,2005.
[2] Stephen R. Palmer, John M. Felsing著,熊煥宇,王峰,彭設(shè)強(qiáng)譯.特征
驅(qū)動(dòng)開發(fā)方法原理與實(shí)踐[M].機(jī)械工業(yè)出版社,2003.
[3] Schwaber K, Beedle M. Agile Software Development With Scrum
[M].Prentice Hall,2001.
[4] Kent Beck. Extreme Programming Explained:Embrace Change
Pearson[J].Addison-Wesley Professional,2003.
[5] Kniberg H著,李劍譯.硝煙中的Scrum和XP—我們?nèi)绾螌?shí)施Scrum[M].
清華大學(xué)出版社,2011.