余久久,張佑生
(安徽三聯(lián)學院 計算機科學與技術系,安徽 合肥 230601)
軟件工程是在工科類高等院校計算機及相關專業(yè)高年級學生中開設的一門重要的專業(yè)必修課程,是指導軟件開發(fā)與維護的一門綜合性課程,也是一門實踐性很強的課程[1].課程的實踐教學內容要求學生不僅了解軟件工程的基本理論,更要掌握現(xiàn)代軟件開發(fā)的技術和方法,開發(fā)過程中所涉及到的各種軟件工具的使用、以及軟件測試與管理技術等.培養(yǎng)出具有計算機軟件開發(fā)能力、軟件工程管理能力、能夠在軟件領域中從事需求分析、設計、開發(fā)、測試、實施和管理等工作的高素質工程類應用型人才,要求學生具備作為軟件工程師所需的專業(yè)能力及職業(yè)素養(yǎng),為今后從事計算機軟件開發(fā)和維護提供方法上的指導[2].由于軟件工程課程的實踐教學內容還涉及到眾多其它領域的知識,如管理學、心理學、經濟學、人機工程學等,因此本課程已經由最初的一門課程發(fā)展成為以計算機科學技術為基礎的交叉學科,在當今的信息社會中占有重要地位.
針對應用型本科計算機專業(yè)的學生,應該將課程教學定位在兩個方面[3,4]:一是從軟件生命周期的角度,讓學生在實踐學習過程中了解軟件工程的基本概念、基本原理和軟件開發(fā)的基本方法;二是從應用型本科高校人才培養(yǎng)目標出發(fā),從工程應用的角度,使學生掌握軟件的系統(tǒng)性與規(guī)范化的最新開發(fā)流程或技術.結合應用型本科計算機專業(yè)的人才培養(yǎng)目標,軟件工程課程的教學過程應既重視理論知識以及分析問題、解決問題的方法的傳授,又要重視工程實踐與技能應用能力的培養(yǎng).教學目標是使學生掌握軟件需求分析、概要和詳細設計及軟件測試與維護等內容,采用工程化的原則、開發(fā)方法與技術來實現(xiàn)中、小規(guī)模信息系統(tǒng)的開發(fā)與管理[5].同時培養(yǎng)學生的操作技能、團隊協(xié)作能力、分析與解決問題、談判與溝通、創(chuàng)新與發(fā)展等多方面能力,為將來從事大型軟件系統(tǒng)的開發(fā)與維護打下扎實的基礎.
鑒于課程強調學生動手能力及培養(yǎng)其分析、解決實際問題能力,大多數(shù)教師往往依據學生現(xiàn)有的知識結構,課堂教學聯(lián)系實際案例,較多采取案例教學或項目實踐的教學方式.但是從實際教學效果來看,教學效果一般.學生沒有表現(xiàn)出濃厚的學習興趣,實際動手能力也沒有得到顯著提高.作者基于近幾年該課程實際教學經驗,認為該課程在教學過程中主要存在以下幾個問題:
隨著軟件開發(fā)新技術、新工具、新方法的不斷涌現(xiàn),基于構件的軟件開發(fā)思想、安卓平臺下開發(fā)軟件的過程、軟件逆向工程以及軟件二次架構等內容已成為當前學科領域的主流[6].可是目前針對軟件工程課程的主要教學內容仍然以傳統(tǒng)的結構化開發(fā)方法為主,嚴重脫離實際.不少教師仍然指導學生選擇傳統(tǒng)的瀑布開發(fā)模型對單機版的軟件進行開發(fā)講解作為教學案例或實踐項目,然而這些案例已隨著web時代的到來逐步退出舞臺[7].尤其是學生在實踐環(huán)節(jié)中接觸到的是逐步被淘汰的內容,與當前軟件產業(yè)技術發(fā)展嚴重脫節(jié),學非所用.
由于軟件工程的實踐性很強,實踐教學時一般需要輔以規(guī)模適中、可操作性強的案例作為教學載體.如果案例選擇不恰當,教學效果肯定不好.即使很多教師意識到這一點,但是在指導實踐教學過程中,因自身缺少實際項目的開發(fā)與管理經驗,未能結合學生自身認知特點對所選擇的教學案例進行過適用性調研.導致對案例的選取要么學生對其業(yè)務背景不熟悉(如業(yè)務背景深奧的金融領域類軟件),或案例過于簡單(如簡單的加減乘除功能的簡單計算器程序等).從學生的角度來看,由于自身尚處在學校學習階段,缺乏實際企業(yè)級項目的實習或實訓經歷,對業(yè)務背景復雜的項目往往在有限的時間內無法完成,從而降低學習興趣.雖然小型項目可以直接進行編碼實現(xiàn),卻不清楚為什么要進行可行性研究、需求分析與程序測試等一系列軟件項目運作流程.此外,由于很多教師缺少實際案例或項目的完整開發(fā)流程的經歷,在實踐教學中出現(xiàn)選擇項目案例前后不連貫情況.例如,軟件的可行性分析階段選用A系統(tǒng)作為案例,需求分析卻用B系統(tǒng),設計與編碼階段又選用C系統(tǒng),測試與維護最終又選用D系統(tǒng)等現(xiàn)象.未能把一個完整的實踐案例貫穿軟件開發(fā)歷經的全部流程展示給學生.導致學生對軟件項目的運作流程不能建立起完整概念,缺乏對所學知識的整體認識.所以,如何在實踐教學環(huán)節(jié)中選擇應用領域為學生所熟知、實施難度適中的完整實踐案例,自始自終貫穿于現(xiàn)代軟件項目生命周期的全過程是課程實踐教學環(huán)節(jié)中需要思考的問題.
由于高校教師大都長期從事教學活動,缺乏軟件工程領域實際項目經驗.不僅對企業(yè)實際環(huán)境下真實的軟件項目運作方式不了解,更沒有深入企業(yè)一線對軟件開發(fā)過程中所歷經的需求分析、系統(tǒng)設計、編碼實現(xiàn)、測試與維護等流程,以及在各階段需要使用到的各類開發(fā)、管理工具與相應開發(fā)環(huán)境配置等內容進行過實際操作[8,9].導致實踐教學(含實驗、實訓、課程設計等)中不重視學生工程化思想的培養(yǎng),缺少對學生工程能力和職業(yè)素質的訓練,也不能及時解決學生在實踐過程中所遇到的各種突發(fā)性難題.教師指導往往只限于組織學生網上查閱與課后編寫軟件開發(fā)各階段所涉及到的相關項目文檔環(huán)節(jié)上,或僅僅要求學生上網下載一些簡單且免費的小軟件,進行操作層面上的大致了解作為實踐任務.導致大多數(shù)學生在實踐環(huán)節(jié)中利用便利的網絡資源進行QQ聊天、網上看電影、上網游戲等一些與學習無關的活動.學生沒有機會通過參與模擬軟件開發(fā)全過程中來提高自己的動手實踐能力,無法產生濃厚的學習興趣.
目前很多教師已逐步意識到對軟件工程課程采取以理論知識點記憶考核為主的傳統(tǒng)開、閉卷筆試的考核方式對學生動手實踐能力與軟件開發(fā)過程能力的培養(yǎng)不利,大都運用側重對學生項目實踐能力考查的考核方式.通常的做法是在對學生進行分組之后,教師布置好實踐題目,只要在規(guī)定時間內收集好每人或每個小組最終的項目成果即算考核通過;或者僅以類似“正確/錯誤”、“優(yōu)/良/中/及格/不及格”等單一作業(yè)成績評定等級,輔以學生的出勤率作為課程考核標準.甚至有些老師在考核中連用到的實踐操作規(guī)范與要求,各階段文檔模板等都未能統(tǒng)一規(guī)范,更談不上制定出規(guī)范的多元化的總體與階段性過程相結合的考核標準.導致教師對學生或項目組在實踐考核環(huán)節(jié)監(jiān)控不利,再加上某些基礎薄弱的學生,缺乏主動學習的精神和獨立思考問題的能力,不愿意參與實踐過程[9].這是當前軟件工程課程考核中存在的嚴重弊端.
當前國內不少高校迫于教學資源限制,大都以服務于日常教學的普通計算機機房或專業(yè)實驗室作為開展軟件工程課程實踐教學的場所,僅在正常上課時間內開放,課外通常不予安排實踐活動時間[9].實驗設備數(shù)量也存在不足,這對軟件工程實踐教學的開展會有直接的影響.基于計算機軟件系統(tǒng)防病毒措施及計算機硬件等公共資產管理等客觀要素,通常采取對計算機系統(tǒng)與所安裝的軟硬件系統(tǒng)進行還原保護等一系列防范措施,這樣在每次開展實踐活動之前學生要花費不少時間重新安裝或部署相關的軟硬件系統(tǒng),從而擠占了實踐活動的時間,影響了實踐教學的效果.
面對當前軟件工程課程教學中所遇到的問題以及教學效果不甚理想的狀況,作者對今后的課程教學提出以下建議.
就軟件工程學科而言,教學內容(案例)的選取要融入當前軟件開發(fā)中的新技術與新方法,培養(yǎng)應用型人才“學以致用”的能力.摒棄對不適用或已過時技術方法的講解(比如取消面向過程的開發(fā)技術,取而代之的是選擇基于web環(huán)境下面向對象以及基于構件開發(fā)技術為主線的項目案例等)[6].案例要以教學內容為依托,題材來源于生活實際并且規(guī)模要適中,且能夠反映出軟件工程最新發(fā)展動態(tài).所涉及到的行業(yè)背景不宜深奧,控制在學生充分了解范圍之內.教師務必演示一個或多個完整并成熟的項目案例,通過子模塊分解或按照分階段實踐的方式貫穿課程實踐教學全過程.教師對所選案例應非常熟悉,最好是親自開發(fā)過的,有利于課程實踐中全面指導學生[7].
教師自身工程實踐能力的培養(yǎng)與建設直接決定實踐教學的效果.現(xiàn)實中多數(shù)任課教師普遍存在“理論水平高,實踐技能低”的現(xiàn)狀,這需要合理安排專業(yè)教師利用寒、暑假到本地相關企業(yè)參加軟件工程相關新技術的培訓及實踐活動,提升其工程實踐能力,打造“雙師型”教學師資隊伍.鼓勵青年教師參加國內外軟件工程領域相關的各類資格及認證考試,并與職稱或薪酬掛鉤[9,10].此外,聘請當?shù)剀浖髽I(yè)一線研發(fā)人員到高校擔任兼職教師,彌補校內教師實踐教學中的能力不足,并以此帶動教師的工程實踐能力.
軟件工程課程的考核主要以實踐環(huán)節(jié)考核為主,強調對學生實際項目運作能力的培養(yǎng).考核方式不僅局限于教師對項目階段性完成成果狀況的檢查,同時也要對項目實施各階段中所涉及到的項目組成員對所用到的理論知識的掌握、實踐技術與相應軟件工具的應用水平、思考與解決難題的能力,文檔標準化程度、項目進度追蹤、項目風險監(jiān)控措施,溝通與合作能力等多個因素進行綜合性評價.所以,采用現(xiàn)場演示,小組自查,組間答辯,問卷調查、集體討論,教師抽查,專家評價等多種靈活多樣變的考核形式,同時聘請企業(yè)相關技術人員加入專家組參與考核過程,并且結合教學實際制定出一套完整的軟件工程課程實踐教學過程的考核體系.
在前文所提出的課程教學相關建議的基礎上,為避免軟件工程實踐教學中可能出的問題(如:實踐活動環(huán)節(jié)與管理環(huán)節(jié)脫節(jié);教師難以跟蹤具體項目實踐進展;項目小組成員間不能及時聯(lián)系等),未來還需要借助或開發(fā)一個面向軟件工程課程實踐教學的管理平臺(系統(tǒng))以保障實踐教學的管理.在以項目分組形式開展實踐活動的教學過程中,該平臺總體上至少需要實現(xiàn)三個功能:項目選題、前期準備與項目管理.選題階段,教師通過平臺創(chuàng)建實踐課題,發(fā)布相關的項目資料或文檔模板等.項目組長可查看和選擇任務,建立實踐項目小組并分配組員任務;前期準備階段,教師向各小組下達具體的項目實踐任務書,各小組接受任務并撰寫項目開發(fā)計劃和測試計劃通過平臺提交給教師審閱,審閱通過后則進入項目開發(fā)階段;項目管理方面,學生按開發(fā)進度通過平臺完成并提交項目開發(fā)各階段的實施成果(設計的用例、編寫的源程序等)以及相應的里程碑文檔,供教師對項目進度隨時進行跟蹤和監(jiān)督,組織階段性評審,提出指導意見.最好平臺能夠提供學生留言和在線答疑功能,這樣教師可以及時得知學生在項目實踐中所遇到的問題,加強對項目組管理同時利用平臺解惑答穎及時反饋,有效保障實踐教學活動的實施與進行.
在新形勢下教師應該把教學活動與當前軟件企業(yè)實際項目運作流程相結合,圍繞應用型本科計算機專業(yè)的學生的認識特點,積極探索課程教學改革新思路及新方法,在提高教學效果的同時培養(yǎng)出更多的合格的應用型軟件技術類人才.
〔1〕范會聯(lián),仲元昌.基于項目驅動的軟件工程課程教學改革探索[J].教育與職業(yè),2013,5(2):147-148.
〔2〕蔣述東.項目教學的特征及其適應性研究[J].教育與職業(yè),2012,18(6):147-148.
〔3〕邢薇薇,蘆葦.國際化軟件工程人才培養(yǎng)的探索與實踐[J].中國高等教育,2012(8):34-35.
〔4〕劉強,陳越,駱斌,等.“軟件工程”課程教學實施方案[J].中國大學教學,2011(2):41-42.
〔5〕李益民,解成俊,劉軍,等.應用型軟件人才創(chuàng)新實踐能力培養(yǎng)模式的構建 [J].現(xiàn)代教育技術,2011,21(11):109-111.
〔6〕余久久,張佑生,傅廷亮,等.軟件工程項目教學思考與探索[J].赤峰學院學報(自然科學版),2013,10(上):238-239.
〔7〕胡洋,蘇琳.Web軟件時代的《軟件工程》課程改革與建設[J].中國成人教育,2010(5):111-112.
〔8〕馬燕,張根耀,王文發(fā).軟件工程實驗教學模式改革與實踐研究 [J].教育與職業(yè),2008,36(12):149-150.
〔9〕余久久,張林,張健.項目教學法在高職院校開展的幾點探討[J].皖西學院學報,2010(2):42-44.
〔10〕柳翠寅,蔣斌,歐方平.軟件工程專業(yè)實行“項目教學法”的研究與實施[J].煤炭技術,2012,31(3):246-248.