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