李天宇,張東輝,張秀坤,張素莉,趙潔紅
(長春工程學院計算機技術與工程學院,長春130012)
《軟件工程》作為計算機專業(yè)和軟件工程專業(yè)的一門主干課程,在計算機專業(yè)教學中占有非常重要的地位。本課程的理論和實踐教學的目的是使學生掌握軟件工程的基本概念、原理、方法和技術,掌握軟件項目的開發(fā)、設計與維護的過程,以及開發(fā)過程中應遵循的原則。基于軟件是計算機的靈魂,與此相應,軟件教學質量從某種意義講,直接影響甚至決定了計算機高級專門人才的培養(yǎng)質量。
近年來,國內眾多高等院校對培養(yǎng)符合社會需求的軟件工程應用型人才進行了有益的探索,上海電力學院計算機科學與技術學院用CDIO工程教育理念來指導卓越工程師的培養(yǎng)[1];武漢科技大學計算機科學與技術學院采用任務驅動教學,并突出了實踐教學[2];浙江大學軟件工程專業(yè)通過校企合作,在實戰(zhàn)中培養(yǎng)從事大規(guī)模軟件工程的軟件人才[3]。所有這些探索的共同特點是:高度重視實踐教學在軟件工程課程中的地位和作用,并通過改進和加強實踐教學,增強理論與實踐的結合,提高學生解決實際問題的能力。
長春工程學院軟件工程課程組教師基于應用型高級專業(yè)人才的培養(yǎng)目標定位,針對課程教學中普遍存在的問題,對軟件工程課程的教學進程、教學內容和教學方式進行了深入系統(tǒng)的研究和改革。
雖然實踐教學在軟件工程課程教學上得到了高度重視,但是在具體教學過程中由于多方面條件的限制,無法達到理想的實踐教學目標。關鍵有以下原因:
1.課程本身的特點。由于軟件工程講授的知識多為概念、原理、原則和經驗性內容,學生在學習的時候會感覺概念抽象、內容枯燥。學生對剛學的理論知識、開發(fā)方法和技術還一知半解,對整個軟件開發(fā)過程更缺乏整體認識[4]。實踐過程中,需要針對軟件項目進行分析和設計,對于沒有項目開發(fā)經驗的學生來說,高質量地完成任務非常困難。
2.學時的限制。為了對學生進行全面的培養(yǎng),在校期間,學生需要學習很多門課程,不論多重要的課程,分配的理論教學和實踐教學的時間都是有限的。多數學校在設置《軟件工程》理論和實踐教學的學時一般為64—72學時。理論教學為40學時左右,實踐學時為32學時左右。而開發(fā)具有一定規(guī)模的項目即使對于一個軟件公司來說,都要以年和月為單位來計劃開發(fā)時間。顯然制定的實踐教學的學時是不夠的。面對這種情況,許多教師在實踐環(huán)節(jié)只能選取軟件開發(fā)過程中的一部分內容進行實踐,這樣做則破壞了實踐教學的完整性。
3.考核方式的問題。多數實踐教學是在實踐環(huán)節(jié)結束后以答辯和提交報告的形式來進行考核。這種方式應用在軟件工程實踐環(huán)節(jié)中會出現(xiàn)問題,由于高等教育從精英教育轉變?yōu)榇蟊娊逃?,班級學生人數較多,指導教師很難隨時掌握所有學生的設計情況,就會發(fā)生各階段出現(xiàn)的錯誤得不到及時糾正,從而造成錯誤的積累和放大,到最后想要彌補和改正都極為困難。
針對以上問題,課題組主要對實踐教學的課程安排、開發(fā)方法以及考核方式進行了改革與研究,具體改革的方法如下:
為了保證軟件工程課程實踐訓練的系統(tǒng)性和完整性,加強理論教學與實踐教學的銜接。課程組采取了獨立設置實踐課程,拉長實踐教學周期的方法。具體的做法是:取消原來分散在軟件工程課程中的實驗課時,獨立設置32學時的軟件工程集中實踐教學環(huán)節(jié),實踐教學周數為8周,每周4學時。表1是具體的時間及內容安排,要注意的是這個內容安排包含了軟件設計開發(fā)過程的各個階段,其中軟件項目管理是貫穿整個實踐環(huán)節(jié)的,但各個階段不是按照傳統(tǒng)的瀑布模型嚴格地分階段執(zhí)行,可以根據具體情況進行調整。
表1 實踐教學的時間及內容安排表
采用分散式的實踐教學方式是由軟件工程實踐教學的特點決定的。對于分析問題的能力和工程化軟件開發(fā)意識較弱的學生來說,對于軟件項目進行的分析與設計,隨著研究的深入,往往需要多次反復修改,在較短時間內倉促完成的成果會有諸多的問題。分散式實踐環(huán)節(jié)與理論課程采用了類似的教學進度,上課時間主要是進行教師指導、研究討論和分階段答辯。課下學生有更多的時間去理解、思考、分析和設計。
這種分散式實踐教學與其他教學區(qū)別是:不同于理論課程的教學,在上課時間不會對理論進行大量講解;不同于課內實驗,分散式實踐在時間的安排上要在《軟件工程》課程結束以后,不屬于課內實驗;不同于課程設計,課程設計一般都是集中在一兩周進行;不同于畢業(yè)設計,畢業(yè)設計側重結果,分散式實踐側重過程。
即使采用分散式實踐教學,但是利用傳統(tǒng)的方法去開發(fā)項目在時間上仍然不足,這就需要采用新的開發(fā)方法。敏捷開發(fā)方法是近些年被重視和研究的軟件開發(fā)方法,敏捷開發(fā)方法具有特點是:以人為核心、循環(huán)迭代、響應變化等等,主要著眼于能高質量地快速交付讓客戶滿意的軟件。將敏捷開發(fā)方法應用于軟件工程課程的實踐教學過程中,能夠克服傳統(tǒng)教學方法的一些缺陷[5]。與傳統(tǒng)的軟件開發(fā)相比,敏捷開發(fā)注重靈活性,簡單、快速,適合于對時間要求嚴格的項目,采用敏捷開發(fā)方法學生能夠在較短的時間內完成任務。同時,敏捷開發(fā)方法與其他的開發(fā)方法在原理和過程上是相同的,這就保證了實踐教學的完整型和全面性,學生將來即使采用其他的開發(fā)方法也不會出現(xiàn)障礙。這些年,敏捷開發(fā)方法被很多軟件開發(fā)公司廣泛使用,掌握了敏捷開發(fā)方法,有利于學生畢業(yè)后求職和快速勝任工作。
敏捷軟件開發(fā)方法包含了5個價值觀和一系列的原則。但是在實踐教學中不是所有內容的都要采用,需要進行剪裁,找到適合的開發(fā)模式。有些理論和經驗對于處在學習階段的學生并不適用,只有在工作中經過一段時間的鍛煉,才能夠真正體會。學生階段,主要就是讓學生掌握理論、方法和技術,同時培養(yǎng)學生的溝通、簡單、反饋、勇氣和謙遜的價值觀。要注意的是:采用敏捷開發(fā)方法,表1中列出實踐內容的各個階段并不是嚴格區(qū)分的,存在循環(huán)迭代。
為了嚴格保證質量,一般工程項目都會進行階段性驗收。由于軟件項目的分析與設計需要進行階段評審,在實踐教學中,采用分階段答辯就是一個合適的考核方式。在項目開發(fā)的每個階段都讓學生對本組的設計成果進行介紹講解,同時回答教師和其他小組同學的提問,這與畢業(yè)設計答辯在形式上相似。采用分階段答辯可以及時糾正學生在設計過程中出現(xiàn)錯誤和偏差,避免問題的積累和擴大。
學生的最后成績主要是根據平時表現(xiàn)、答辯表現(xiàn)、提問情況和團隊分數四個方面進行綜合打分。不同階段答辯的同學不能相同,這就要求組內所有的同學都要共同努力,只有團隊取得較高分數才能保證個人的成績。分階段的項目答辯不但能檢查項目的進展情況,而且能為更多的學生提供展示自我的機會,提高學生的表達能力和反應能力,培養(yǎng)了學生的自信心,也為將來的畢業(yè)答辯打下良好的基礎。
在此過程中,不僅要看學生設計的結果和解決方案正確與否,還要看學生是否認真地思考了問題。因為一個軟件項目常有多種解決方案,看學生是沿用以前的方案,還是經過思考采用新的方案。即使新的方案有缺點和不足,也會給出較好的成績,鼓勵學生去思考創(chuàng)新。
通過將改革后三個學年的學生學習情況與改革前的情況進行對比研究,發(fā)現(xiàn)兩種培養(yǎng)模式在期末考試中客觀題的解答上相差不大,但是主觀題目的解答上,改革后的學生分數明顯提高。許多學生在經歷改革實踐后發(fā)生很大變化,從被動學習到主動學習,從不愿在同學面前講話到積極表達自己的看法,學生對軟件工程產生了濃厚的興趣,能夠深入思考和創(chuàng)新。教師與學生之間的溝通也大大增加。
從畢業(yè)生求職的情況來看,教學改革后畢業(yè)生在面試環(huán)節(jié)獲得的評價很好,簽約率也明顯提高。改革后的第一屆畢業(yè)生就取得很好的成績,2011年國內某知名企業(yè)在吉林省招收了計算機專業(yè)6名學生,其中4名為其他院校的研究生,2名為我院的本科學生,公司報到后被安排在研發(fā)部門工作。
本文為教研項目“基于敏捷開發(fā)方法的軟件工程實踐教學的改革與研究”的研究成果,在軟件開發(fā)方法采用敏捷開發(fā)的基礎上,又研究出了分散式實踐教學的課程設置方式和分階段答辯的考核方式,其中首次采用的分散式實踐教學方式,在軟件工程課程實踐教學中實現(xiàn)了創(chuàng)新,并取得了良好的效果。通過改革和研究有效地解決了軟件工程實踐教學中的難題,實現(xiàn)了計算機軟件開發(fā)應用型人才的培養(yǎng)目標。
[1]畢忠勤,單美靜.基于CDIO的軟件工程專業(yè)培養(yǎng)體系建設[J].計算機教育,2013(8):23-26.
[2]張曉龍.面向應用型人才培養(yǎng)的軟件工程課程改革與實踐[J].計算機教育,2010(5):10-13.
[3]楊小虎,陳越.基于大規(guī)模工程實踐的軟件工程專業(yè)建設的探索與創(chuàng)[J].計算機工程與科學,2011,33(A1):164-167.
[4]曾紅衛(wèi),劉悅,劉煒.軟件工程實踐教學方法探索[J].計算機工程與科學,2011,33(A1):15-18.
[5]林曉宇,鐘一文,黃世國,等.基于Scrum敏捷方法的軟件工程實踐教學探索[J].電腦知識與技術,2011,7(19):4762-4765.