張帆
【摘 要】這個(gè)時(shí)代,伴隨互聯(lián)網(wǎng)+、創(chuàng)新創(chuàng)業(yè)等大幅向前邁步改變所有行業(yè)創(chuàng)造產(chǎn)品的角度同時(shí),高等本科院校計(jì)算機(jī)專業(yè)課程體系中,在大三一般都會(huì)開設(shè)《軟件工程》這一重要課程。但根本筆者近三、四年對(duì)《軟件工程》教學(xué)研究后發(fā)現(xiàn),本課程由于教學(xué)內(nèi)容和教學(xué)實(shí)踐的限制,上課與上機(jī)都難說理想,選課老師也有意回避此課程教學(xué)。近年來敏捷項(xiàng)目開發(fā)的興起,可讓學(xué)生改變雞肋式教學(xué),認(rèn)識(shí)到互聯(lián)網(wǎng)下敏捷開發(fā)從產(chǎn)品經(jīng)理到程序員到最后軟件上線整個(gè)過程的快速落地,高效實(shí)踐重要性。本文提出希望利用這一新興模式在教學(xué)改革中打破常規(guī),為教師教學(xué)大綱重新設(shè)定和上機(jī)實(shí)踐案例教學(xué)提供思路和啟示。
【關(guān)鍵詞】敏捷開發(fā);軟件工程;教學(xué)方法
1 引言
軟件工程作為高校計(jì)算機(jī)領(lǐng)域一門重要課程已經(jīng)發(fā)展超過半個(gè)多世紀(jì)。隨著計(jì)算機(jī)電子化、網(wǎng)絡(luò)化呈幾何倍速的飛速發(fā)展,它已經(jīng)成為一般本科高校的軟件工程專業(yè)中必不可少的一門獨(dú)特課程。但是基于筆者對(duì)于本課程三、四年教學(xué)實(shí)踐的總結(jié),發(fā)現(xiàn)軟件工程這一課程的系統(tǒng)理論知識(shí)和上機(jī)教學(xué)在本科階段教學(xué)實(shí)踐環(huán)節(jié)中都差強(qiáng)人意。我也曾經(jīng)在課堂上針對(duì)軟件工程專業(yè)學(xué)生進(jìn)行非正式調(diào)研,發(fā)現(xiàn)一個(gè)班45人左右,大約只有10人左右同學(xué)認(rèn)可軟件工程對(duì)于項(xiàng)目重要性,希望去學(xué)習(xí)相關(guān)文檔編寫工作,而其余大多數(shù)同學(xué)則在內(nèi)心中抵制這門課程,認(rèn)為“軟件工程對(duì)于他們的畢業(yè)找相應(yīng)計(jì)算機(jī)工作幾乎沒有任何幫助”。那為什么奉為經(jīng)典的軟件工程理論在本科教育實(shí)踐中遭遇如此尷尬?針對(duì)這一困惑,反思認(rèn)為“軟工無用”這一現(xiàn)象的主要原因并不是“軟件工程真的無用”,而是作為教學(xué)管理缺乏一套有效的教學(xué)體系,上機(jī)效果差,導(dǎo)致大多數(shù)學(xué)生不能將理論轉(zhuǎn)化為實(shí)踐并運(yùn)用到實(shí)際開發(fā)中去?;谶@樣的調(diào)研分析,筆者嘗試在本科教學(xué)中利用一種全新軟件工程模式—敏捷開發(fā),讓《軟件工程》課程回歸它應(yīng)有的地位,讓這門課程真正為學(xué)生所用。
2 敏捷開發(fā)在教學(xué)中提出
現(xiàn)階段《軟件工程》課程教學(xué)中,幾乎現(xiàn)有市面教材千篇一律的大幅度介紹傳統(tǒng)軟件開發(fā)的方法學(xué),也就是以瀑布模型作為主線(如圖所示),其特點(diǎn)是比較抽象,要求學(xué)生具備較高抽象能力和文檔寫作能力,可由于高校擴(kuò)招,學(xué)生素質(zhì)整體下降,加之學(xué)生本身在大學(xué)上學(xué)期間對(duì)項(xiàng)目開發(fā)流程就比較模糊,教材又將軟件生命周期劃分為前期調(diào)研、可行性分析、需求分析、總體設(shè)計(jì)、程序編碼、軟件測(cè)試、系統(tǒng)維護(hù)等七個(gè)活動(dòng)進(jìn)行分階段分章節(jié)講解,也就更沒有能力獨(dú)立完成可行性報(bào)告、數(shù)據(jù)流圖、ER圖及數(shù)據(jù)字典的設(shè)計(jì),最后學(xué)生也就認(rèn)為軟件工程在實(shí)際應(yīng)用中幾乎為零。
而隨敏捷開發(fā)近兩年在國(guó)內(nèi)外興起,它不是一門技術(shù),是一種開發(fā)方法,也就是一種軟件開發(fā)的流程,它會(huì)指導(dǎo)我們用規(guī)定的環(huán)節(jié)去一步一步完成項(xiàng)目的開發(fā)。這種開發(fā)方式的主要驅(qū)動(dòng)核心是人,采用迭代式開發(fā),原本一個(gè)教學(xué)周期32個(gè)學(xué)時(shí)、12個(gè)上機(jī)及24個(gè)課程實(shí)訓(xùn)都是以瀑布式講解為主線,因?yàn)槠俨寄P鸵晕臋n為驅(qū)動(dòng),導(dǎo)致學(xué)生對(duì)整套開發(fā)流程陌生,不知如何下手;這時(shí),敏捷開發(fā)在教學(xué)中提出,只需跟學(xué)生介紹必要的文檔編寫工作,或盡量少講解文檔如何編寫,更注重的迭代式開發(fā)、互動(dòng)式開發(fā)等基本原理和上機(jī)實(shí)踐案例教學(xué)布置,讓學(xué)生知道項(xiàng)目以人為核心好處,知道Scrum和XP這兩種敏捷開發(fā)的具體方式,可以揭示更好的軟件開發(fā)方法的利用。
3 敏捷開發(fā)在教學(xué)中實(shí)踐應(yīng)用
《軟件工程》以往的教學(xué)方法是,根據(jù)軟件生命周期,從第一章軟件工程概述開始,就讓學(xué)生了解軟件開發(fā)模型,并且從第二章可行性分析開始,上課與上機(jī)不自覺的進(jìn)行毫無設(shè)計(jì)與想法的憑空項(xiàng)目調(diào)研,隨之而來的就是在word、Visio、powerDesign等一系列建模、畫圖、可行性報(bào)告等工具上進(jìn)行虛擬練習(xí),但是學(xué)生在學(xué)完軟件測(cè)試章節(jié)后,大概只記得像LoadRunner這樣工具是怎么打開和安裝的,具體怎么編寫有用的文檔,怎樣進(jìn)行高效的團(tuán)隊(duì)合作,怎樣編寫執(zhí)行效率更高的源代碼方面卻還是一片茫然。那么,我們?cè)凇盾浖こ獭氛n程講解中,何不打破這樣的常規(guī)假命題,首先在教學(xué)目標(biāo)上進(jìn)行重新設(shè)定。
教學(xué)目標(biāo)的改革要以學(xué)生對(duì)軟件項(xiàng)目管理能力為第一視角,不管是瀑布開發(fā)還是敏捷開發(fā),最終都是團(tuán)隊(duì)合作,都是用管理激發(fā)每個(gè)團(tuán)隊(duì)成員的積極性來打造項(xiàng)目。而且要讓學(xué)生知道學(xué)習(xí)本課程最終目的不是為了得到所謂120頁或1200頁的文檔規(guī)范,而是為了得到客戶使用情況的真實(shí)反饋,注重客戶的感受,適度的文檔編寫會(huì)讓雙方利益最大化,這是在課程目標(biāo)設(shè)定上進(jìn)行定位。
其二,教學(xué)內(nèi)容改革上,應(yīng)結(jié)合學(xué)生在每次上課的教學(xué)內(nèi)容及學(xué)生在前面學(xué)期中所學(xué)習(xí)到的專業(yè)知識(shí)基礎(chǔ),比如數(shù)據(jù)結(jié)構(gòu),C/C++,JAVA/.net等編程能力掌握,由易到難的分別完成“圖書借閱管理系統(tǒng)”、“撞球類小游戲”、“軟件產(chǎn)品創(chuàng)業(yè)可行性計(jì)劃書”、“安卓手機(jī)服務(wù)類應(yīng)用開發(fā)”為主體教學(xué)內(nèi)容,在教學(xué)中,始終以四個(gè)案例進(jìn)行串聯(lián)講解,把案例切分成很多細(xì)小節(jié)點(diǎn),每章每節(jié)中都要進(jìn)行回溯跟蹤,讓學(xué)生始終知道“為什么”“是什么”“怎么做”,避免浪費(fèi)時(shí)間進(jìn)行學(xué)習(xí)。在上機(jī)中,以四名同學(xué)為單位成立項(xiàng)目開發(fā)小組,鍛煉出具備一定軟件實(shí)戰(zhàn)開發(fā)經(jīng)驗(yàn)同學(xué),讓他們以項(xiàng)目Leader的角度多在團(tuán)隊(duì)中講解項(xiàng)目學(xué)習(xí)方法,個(gè)人實(shí)踐技巧,發(fā)揮課堂上下聯(lián)動(dòng)機(jī)制,然后老師在上機(jī)輔導(dǎo)中進(jìn)行拋磚引玉,有目的有方法進(jìn)行項(xiàng)目開發(fā)進(jìn)度的跟進(jìn),確立“一體兩翼”的教學(xué)思路。
4 結(jié)束語
本文在分析了傳統(tǒng)《軟件工程》雞肋式教學(xué)成因后,大膽提出教學(xué)改革模式,引入敏捷開發(fā),作為本科教學(xué)實(shí)踐實(shí)施過程的方法論。通過學(xué)生班級(jí)分組,團(tuán)隊(duì)合作,最終得出幾點(diǎn)結(jié)論:(1)敏捷開發(fā)較傳統(tǒng)瀑布式開發(fā)有明顯實(shí)踐動(dòng)手優(yōu)勢(shì),但并不能代表能夠取代傳統(tǒng)軟件周期教學(xué)模式,實(shí)際上敏捷開發(fā)模式只是在傳統(tǒng)軟件工程模式的補(bǔ)充;(2)敏捷開發(fā)有效樹立班級(jí)學(xué)生完成項(xiàng)目自信心,特別是針對(duì)很多在軟件編程方面缺乏信心的同學(xué)。但是,敏捷開發(fā)植入計(jì)算機(jī)教學(xué)中是一種全新嘗試,如何有效的深入擴(kuò)展到各專業(yè)領(lǐng)域,將是筆者以后深入探索的內(nèi)容。
參考文獻(xiàn)
[1]閆俊伢.軟件工程課程理論與實(shí)踐教學(xué)方法[J].計(jì)算機(jī)教育,2010(21):115-117