劉坤 包瓊
摘? 要:從創新能力培養的角度,基于常見的“項目案例驅動法”,提出了一種“開發式案例教學法”,在軟件工程的教學過程中主張以學生為中心,在系統選題、開發和解決問題的過程中發揮自主能動性,突出“打破常規思維”的思考方式。該教學法能減少學生學習過程中對于教師的依賴度,在實踐中發現能夠激發學生的思維活躍度,促使學生主動地將課程中所學到的理論知識應用到實際中。
關鍵詞:軟件工程;創新思維;教學法
中圖分類號:G640 文獻標志碼:A? ? ? ? ?文章編號:2096-000X(2020)34-0037-04
Abstract: From the perspective of innovative thinking training, based on the common project case driven method, this paper puts forward an "open case teaching method". In the teaching process of software engineering, it advocates taking students as the center, playing its own initiative in the process of topic selection, development and problem solving, and highlighting breaking conventional thinking. This teaching method can reduce the dependence of students on teachers in the process of learning. In practice, it is found that it can stimulate students' thinking activeness, and make students actively apply the theoretical knowledge learned in the course to practice.
Keywords: software engineering; innovative thinking; teaching method
前言
軟件工程本身是從軟件開發的實踐中通過經驗總結理論升華出來的一門學科,無論是“教”還是“學”,都非常注重實踐[1-2],強調將所學到的理論知識與實際相結合。近年來國家提出了根據經濟發展形勢,提倡了“大眾創業、萬眾創新”發展戰略,創新創業教育成為了高校當今本科教學改革中的一項重要內容[3]。
在這個背景下,本文從創新思維培養的角度對《軟件工程》的實踐教學環節提出了一種“開放式案例教學法”。該方法對吸收了“項目案例驅動法”注重案例與實踐的優點,同時將開放式的案例教學法融入其中,在開發式案例的設計中注重創新思維的培養。多輪《軟件工程》課程的教學實踐表明,該方法可以很好的激發學生的創新思維活躍度,學生從被動接受軟件工程的理論訓練到主動應用軟件工程的理論知識去解決問題。
一、軟件工程實踐教學存在的問題
《軟件工程》作為一門軟件工程等專業的核心課程,學生在學習過程中普遍覺得理論抽象,而實際動手又無從下手,因此在教學中多采用“項目案例驅動式”教學法[4]。項目所采用的案例是一個成熟的解決方案,涵括了軟件工程所要求的需求、設計、編碼和測試等環節。這些都以文檔或源碼的形式提供,任課教師通過教學環節的設計引導學生學習這些內容,從而讓學生獲得完整的項目開發的整體訓練。從實際教學效果看,“項目驅動法”很好地解決了學生在學習中感覺理論抽象的難題,通過具體可動手操作的案例,學生通過模仿案例的實施過程獲得理論認知,通過案例所提供的動手練習的訓練鍛煉編程技能,從而在理論知識和實踐能力兩方面都獲得了很大的提升。
但在多年的教學過程中也發現了該方法存在的一些不足:
1. 由于案例成熟,資料相對豐富完整,學生能夠獲得實在的專業能力訓練,但思維也容易被案例所提供的方法和文檔所限制,從而形成一種固化思維,一旦脫離原有案例,學生無法有效地將所學的知識遷移到其他場景,存在“生搬硬套”的情況。同時如果所設計的案例的質量還會影響到培養效果,一旦所設計的案例存在不遵守軟件工程規范的情況,還會起到反作用。
2. 案例設計周期較長,教師往往花費較長的時間準備。一旦設計完成,教師缺乏足夠的動力對案例進行持續改進。存在一個案例使用若干年的情況,所使用的技術與時代脫節。
3. 教學過程的實施與推進是由教師主導的,學生跟隨教師的指令完成各個子任務。學生的主動性在這一過程中是受限的,自我思考空間有限。
二、創新教育的內涵
(一)提高對創新教育的認識
對于工科教育,學生不僅要學習理論知識,還需要加強動手實際操作,鍛煉基于理論知識解決實際問題的能力,即常說的“實踐能力”。對于《軟件工程》而言,“項目案例驅動法”便是這一理念的產物。但實踐能力與創新能力并不完全等同。呂薇[5]指出創新能力應該是對實踐能力的進一步發展與提升。從大學本科教育看,實踐能力首先來源于學校實踐教學環節所要求的標準,包括實驗、課程設計、實訓等。當學生達到這些標準的合格水平時,可以認為便具備了本專業對學生所要求的基本實踐能力。創新教育在這個基礎上側重于創新能力的培養。
高校實踐教學環節是與理論教學緊密相連的,在各大高校都屬于培養方案與課程體系的組成部分,同屬教育質量的監控范圍。而創新教育則一般依托第二課堂比如競賽,企業實訓等展開,各個高校在實施過程中所具備的條件如時間實習基地,經費等存在很大差異,導致實施方式也存在很大的差別。
但核心差異還是來源于對于第一課堂和第二課堂之間關系的認識。從前述調研結果可見,高校本科在校生大部分的學習時間仍然是針對第一課堂所要求的學習任務的。一者工科課程知識大多難度較大,知識體系也相對嚴謹,學生理解和掌握要花費大量的時間。比如軟件工程專業學生要在編程語言方面做大量的編程訓練才能熟悉該門語言,達到基本實踐要求。再者教師對第一課堂容易掌控,管理部門也容易對第一課堂進行管理,其教學效果也易于評價。
有調研結果顯示[6],本科生在第一課堂所花的學習時間占全部實際學習時間的比例平均高達91.65%。這表明,能夠提高創新能力培養的第二課堂,本科生能夠分配出來的時間非常有限,大部分時間仍然被繁重的學習任務所占用。因此,在不能夠大幅度提高第二課堂時間占比的情況下,積極改進第一課堂的教學,并在這一主陣地融入創新教育,顯得非常有必要。
(二)創新教育理念探討
第一課堂的“實踐教學環節”由于有教師的示例與示范,學生依葫蘆畫瓢完成任務,其學習活動本質上并不具備培養創造力的要素。AHP和ANP的發明人托馬斯L.薩蒂教授就培養創造力這一話題在其關于創造性思維的著作[7]中做出了許多有益的探討,提出了不少真知灼見。受此著作啟發,本文所討論的“開放式案例教學法”提出了如下設計理念:
1. 要引入新的問題
心理學家研究指出,新的問題提供新的場景,從而刺激人的大腦積極思考問題,提出具有創新性想法的概率也會增大。而科研活動一般也強調“用新的方法解決已有的問題”,或者“用舊的方法解決新的問題”,或者“用新的方法解決新的問題”。對于本科在校生而言,受其知識儲備影響,“提出新的方法”這一要求不具備普遍性。因此引入新的問題促使學生去解決之,則更具可行性。
2. 提倡“打破常規”的思考方式
教育很容易陷入“知識復刻”的泥潭,即知識只是在不同的人之間為完成了記憶的復制[7]。人們試著去解決問題時,往往從已習得的知識和經驗中尋求解決方案。因循守舊,固守成規是人類思維的慣性,而這與創造能力的培養是格格不入的。創造教育應該強調“打破常規”的思考方式,突破已有解決方案存在的一些限制,也要突破個人思維上存在的一些束縛。
3. 鼓勵“試錯”
已有的知識和經驗給人帶來安全感,新的問題或突破常規則會讓人面對未知,這種境遇給人的心理上帶來畏懼情緒,導致退回到已有的或現存的解決方法的思考狀態中去,不敢去驗證新的想法。而鼓勵“試錯”則是鼓勵一種冒險精神,也是鼓勵一種不怕麻煩,不畏困難的精神。創造力是個人智力、品格等各方面能力的綜合反映。創新教育也是對人的良好品格塑造的一個過程。
三、開放式案例教學法
(一)教學法的設計
所謂“開放式案例教學法”,指在教學過程中以能力培養為導向,在強調軟件工程理論原理和規范的基礎上,不提供統一答案與解決方案,讓學生在教師的指導下獨立或分組完成軟件系統的設計與開發。
將現有的實踐教學環節分為兩個階段,在第一階段仍然采用“項目案例驅動法”,配合課堂的理論教學部分。在第二個階段采用“開發案例教學法”,側重于創造能力的培養。
《軟件工程》本身的理論知識體系已然成形,必備的軟件開發過程相關知識仍然對軟件開發有指導作用。而這些知識的教學要將理論知識傳授與實踐教學結合起來,才能擺脫抽象與枯燥的理論知識給學生帶來的不適應。這個階段的任務是要讓學生對軟件開發過程有一個整體上的把握,從需求分析,到系統的設計,再到編碼和測試,學生通過這些練習這些步驟最后能得到一個基本可用的系統。這個階段對于軟件工程專業的學生而言是非常有必要的,而且是不能逾越的。
而在第二階段則以學生自選題目開始,圍繞軟件系統的設計與實現,教師可以將該階段的任務劃分為若干個小階段。教師對每個小階段布置階段性任務,對學生做出的結果做出評價與改進意見。整個教學過程以最后得到軟件系統為結果導向,對結果驗收標準做出明確要求,其他都如開發進度,技術選型,開發工具等等都不做具體要求,每個小階段也不預設標準答案,給予學生充分的自主權,促使學生通過探究式學習完成任務。
(二)設計要點
1. 選題要針對實際問題,不能采用陳舊或脫離生活經驗的題目
選題是“開放式案例教學法”的第一步,也是很重要的一步。它決定了后續學生學習的關注點。但學生對于選題要么企求教師給定參考題目,自己做選擇,或是缺乏調研,想當然的選擇題目。
比如根據學生現有的生活經驗,選擇類似“機票銷售”“酒店管理”的題目都是不太合適的。這樣選題就明顯不符合學生既有的生活體驗。這樣的選題,教師在選題之初就應該直接否定。
從創新角度看,教師要鼓勵或半強制性的要求學生自己去發現問題,從以往的解決方案中尋找能改進的地方,并通過與教師商量,自己擬定項目的題目。在這個過程中,學生的思維得到充分的釋放,教師只是給出指導意見,評價學生選取的角度是否合適,問題的難度是否在學生所具備的解決能力范圍內。
2. 遇到問題時,要扔掉“老師”這根拐杖,強調自主性
學生要學會自己去網絡查找解決方案,尤其是一些技術問題。而教師在遇到學生提問題時,也要注意一定引導性,指出查找解決方案的方向。在這個交互過程中,既要杜絕直接把答案告訴學生,也要防止對學生的提問不管不問,完全放手。
在解決問題的過程中,要鼓勵學生敢于試驗自己的想法,這是創新能力中難能可貴的個性品質。高校學生正值人生思維活躍,精力旺盛的黃金時期,但面對挫折與困難時容易打退堂鼓,此時外界的鼓勵會激發學生戰勝困難的斗志。因此教師要適時了解學生的學習進展情況,幫助分析所遇到的問題,更重要的是從精神源頭予以鼓勵。
3. 注重思考方式的引導
學生在解決問題的過程中,很容易受到現有軟件中的已有方案的影響。比如一遇系統中有支付需求,就想用接入支付寶或微信;一遇到系統內用戶之間有溝通或聊天的需求,就想到創建聊天室等等。借用現有的解決方案能快速地應用于問題的解決,但同時也會固化思維,這對于未來從事軟件開發的學生而言是不利的。在評價學生的這些解決方案時要合理地否定學生所做出的選擇,引導學生以發散性思維去尋找其他方案。
這是本教學法中很重要的一環。軟件系統設計與開發是依賴解決方案的不斷完善逐步往前推進的。對學生提出的解決方案予以一定程度的否定,實際上是在學習上給予一定的極限施壓,在一定的壓力下讓學生充分調用所學習的知識去思考問題,甚至于主動去學習一些新知。
(三)案例探討
下面以教學改革過程中所產生的幾個案例為例來闡述這一方法。
案例1:在系統選題階段,學生設想了一個名為“聽曲識歌”的題目,想法是當人們聽到一段曲子時,如果很感興趣,就可以利用這個系統找到對應的歌曲。這個想法很明顯來源于生活,當聽到了某段音樂特別喜歡時非常傾向于知道跟這段音樂相關的東西,如歌名、歌手等信息。這應該說是一個比較有創意的一個想法。但經過教師的評估后,覺得根據學生在音頻處理方面所具備的技術水平還不足以支持完成這個項目,建議學生予以更換。
案例2:學生提出了設計與開發一個“樹洞”快應用的想法,開始之初學生的想法是想為那些心理抑郁的患者提供一個社交應用,在上面能夠吐露自己的一些話語,也能夠用漂流瓶的方式交友。人們還可以在上面發表跟心理相關的文章,幫助人們解決心理的一些問題。應該說學生選擇這一題目的角度還是很有應用價值的,當今社會發展迅速,壓力倍增,卻鮮有從心理輔導的角度來進行社交的,這一想法有創新性。
經過與學生的多輪討論后,做了如下修改:第一,砍掉漂流瓶功能,對比QQ中所提供的這一功能發現實際用途不大,因此QQ在新版本中已經去掉了這一功能。建議砍掉該功能以聚焦核心功能。第二,簡化發文章的功能,以免形成“心靈雞湯”之類的水文影響閱讀質量。同樣也是為了聚焦核心功能。第三將心理輔導不局限于“心理抑郁”患者。如果真是這樣的患者,出于個人隱私考慮,也許并不會使用這款應用,同時也牽扯到一些道德倫理問題。于是建議將系統功能的切入點換作提供“心理壓力發泄”的一個渠道,這樣對任何心理正常的普通人都可以使用。因為普通人生活中都會有一些委屈、不滿等負面情緒,需要通過一個渠道發泄出來,這樣“樹洞”僅是一個具有“心理疏導”功能的小應用。雖然功能單一,但面對的用戶群體比較大,能發揮比較重要的作用,在技術上學生也容易實現。在實現過程中,學生還比較有創意的給所開發的功能取名為“留存”“花泥”等,很形象地表達了系統的功能,也給人耳目一新的感覺。在這個過程中,學生通過與教師的討論、醞釀和碰撞,提出了很多想法,所呈現的思維狀態非常活躍,達到了本教學法的目的。
四、反思
“開放式案例教學法”由于在軟件開發的許多環節都強調學生的自立與主動,而不是按照教師規劃的路徑往前走,因此學生在初期是不太適應這種教學方式的,遇到問題時總希望從教師這里得到直接的答案。但在教學后期學生能主動地去網絡搜尋資料,學習新的技術來解決問題,學習方式發生了很大的轉變。
而這種教學法對于教師也提出了較高的要求。教師要學習一些創造教育知識,經過一些較系統的創造力訓練,這樣對學生的“創造能力”培養才能做出有效的指導。
“開放式案例教學法”并不是完全放任學生不管,它是在一定的框架范圍內給予學生學習上的自主權。而這個框架范圍就是軟件系統設計與開發原理與規范。教師僅對學生是否遵守了原理與規范做出明確評判,而在該教學法的其他活動中都是“旁觀者”或是“參與者”的身份,以用戶的視角去看待學生開發的系統。
五、結束語
本文以《軟件工程》課程教學中常見的“項目案例教學法”為參照對象,從創新思維培養的角度提出了一種“開發式案例教學法”,該方法在軟件開發的各個環節中融入創新意識,逐步培養學生“打破常規”的創新思維,在實踐中取得了一定的效果。在今后的教學改革中,將逐步完善該教學法的內涵,豐富相應教學手段,發掘其與“項目案例教學法”的協同作用,提高其適用范圍。
參考文獻:
[1]趙軍霞,焦鉻,張劍.新工科背景下的軟件工程實踐課程教學改革[J].計算機教育,2019(11):69-72.
[2]祁鑫,宋會英,崔浩.新工科背景下“軟件工程”課程教學改革的研究與探索[J].中國石油大學勝利學院學報,2018(4):65-68.
[3]陳志剛,夏旭,師雷宏,等.“雙創”視域下軟件工程專業人才培養模式探析[J].中國大學教學,2017(11):119-22.
[4]汪克峰,梁洪峰,范洪輝.基于項目模式的軟件工程專業實踐教學的研究[J].江蘇理工學院學報,2017(6):89-94.
[5]呂薇,韓晴,黃波,等.大學生創新能力的培養模式及機制的淺談[J].高教學刊, 2019(1):32-34.
[6]楊風開,李紅斌,尹仕.工科專業教育融合創新創業教育的教學模式[J].高教學刊,2019(13):25-27.
[7]托馬斯L.薩蒂.創造性思維(第一版)[M].北京:機械工業出版社,2018:6.
*基金項目:湖北經濟學院法商學院教學研究項目“新工科背景下融入創新訓練的軟件工程課程教學研究”(編號:2019J18)
作者簡介:劉坤(1979-),男,漢族,湖北荊州人,博士,副教授,研究方向:軟件工程,深度學習等。