【摘要】針對《軟件工程》教與學(xué)過程存在的問題,提出了“學(xué)科知識的進化、應(yīng)用能力的強化、人才素質(zhì)的優(yōu)化”的教學(xué)三段論,結(jié)合《軟件工程》學(xué)科特點,歸納出層次化教學(xué)的模式設(shè)計。
【關(guān)鍵詞】軟件工程,三段論,層次化,面向?qū)ο?,能力?qū)動法,“3+1”柔性法
【中圖分類號】G434 【文獻標識碼】B 【論文編號】1009—8097(2007)08—0109—04
一、前言
《軟件工程》是計算機專業(yè)的一門必修課,在計算機專業(yè)學(xué)生大學(xué)學(xué)習(xí)期間占據(jù)很重分量的學(xué)科。但基于《軟件工程》自身抽象性與應(yīng)用性都很強的特點,在教與學(xué)的雙向工程中存在不少問題,致使效果差強人意。如何提高軟件工程的教學(xué)水平和質(zhì)量,是很多國內(nèi)外學(xué)者廣泛探討的話題。
從事過軟件開發(fā)的人都有種體會,軟件工程對開發(fā)太重要了。說“軟件工程是程序員的哲學(xué)”一點也不為過,一個真正理解軟件工程思想的人才能更好地理解軟件。同時,軟件工程的理念對一個人的生活及工作態(tài)度也有很大的幫助,特別在條理化、規(guī)范化方面的約束方面,起到了很好的促進作用。在大學(xué)的計算機專業(yè)開設(shè)這門課,不僅僅對提高學(xué)生理解軟件有幫助,對世界觀、人生觀的奠定也有一定意義。
本文從《軟件工程》課程特點及實施現(xiàn)狀說起,把先進的管理理論與教學(xué)方法相結(jié)合,提出針到性與通用性交叉發(fā)展的課程教學(xué)思路,為高校課程由點及面的得以+消化助一臂之力。
二、《軟件工程》的特點及存在的問題
軟件工程是一門教學(xué)難度比較大的課程,主要原因歸結(jié)于它的以下幾個特點:首先,軟件工程作為指導(dǎo)計算機軟件開發(fā)與維護的工程學(xué)科,研究范圍很廣,包括技術(shù)方法、工具和管理等許多方面;其次,它又是一門邊緣學(xué)科,涉及領(lǐng)域很廣,計算機科學(xué)、計算機技術(shù)、計算機工程、系統(tǒng)工程學(xué)、管理學(xué)及經(jīng)濟學(xué)等,內(nèi)容豐富。再次,這又是一個相對比較年輕的學(xué)科,尚未形成成熟的教學(xué)模式,教材也少有提供較為成熟的設(shè)計訓(xùn)練實踐內(nèi)容。最后,軟件工程又是個時刻發(fā)展的技術(shù),相關(guān)課程更替很快,如果繼續(xù)偏重以往的成熟理論,會造成與最新技術(shù)的嚴重脫節(jié)。
以往的實踐教學(xué)表明,學(xué)生學(xué)完軟件工程,往往感覺抽象和枯燥,僅從書本上無法切實理解和相信軟件工程技術(shù)的好處,到頭來留給學(xué)生文科式課程的印象,變成考前死記硬背的突擊,效果事與愿違。本文作者依據(jù)軟件工程的教學(xué)情況及參加項目開發(fā)時的切實體會,分析總結(jié)出軟件工程教學(xué)中存在的問題,如下:
1、課程內(nèi)容結(jié)構(gòu)“死板”。
計算機教育是一項實踐性很強的工程,但在實際的本科教育中,軟件工程大多以教授技術(shù)和方法為主,欠缺了學(xué)生軟件開發(fā)能力培養(yǎng),在軟件的管理能力上也并沒有達到預(yù)期效果。絕大多數(shù)的學(xué)生因教學(xué)與實踐的脫節(jié)致使軟件工程成了純理論化課程,只能徘徊在表面,如何用這些知識,這些知識有何價值,體會不到。而對于軟件市場,企業(yè)強烈需求的是既懂軟件開發(fā)又懂軟件管理的復(fù)合型人才。因此,在大學(xué)的本科教育中,對軟件工程課程的設(shè)置以及培養(yǎng)目標的重新定位是很必要的,軟件工程的思想也不僅僅的用于軟件產(chǎn)業(yè),在計算機及其它相關(guān)專業(yè)的研究生課程設(shè)計上,加上高級軟件工程的課也是大有益處的。
2、結(jié)構(gòu)化知識陳舊。
原有教學(xué)內(nèi)容有些陳舊,教材變來變?nèi)ゴ蟛糠诌€是停留于一種結(jié)構(gòu)分析和結(jié)構(gòu)化設(shè)計技術(shù)上。在知識的融會貫通上,可重用性較差,滿足不了軟件開發(fā)需求的,不如面向?qū)ο蟆⒚嫦蚍矫娴刃滦图夹g(shù)更能得到開發(fā)人員和客戶的歡迎,實用性方面也不再占優(yōu)勢。但傳統(tǒng)的知識并不一無是從,從知識的延續(xù)性來說,學(xué)生是從結(jié)構(gòu)化的程序設(shè)計語言開始學(xué)習(xí)的,接受此類知識較容易。
3、流行技術(shù)與學(xué)生知識積累程度之間存在縫隙。
現(xiàn)代軟件工程內(nèi)容豐富,基于UML的面向?qū)ο蠼<夹g(shù)、以新型技術(shù)支持的軟件度量方法、測試方法、Rational Rose工具、RSA等開發(fā)工具。在軟件管理方面,CMM、配件配置管理以及軟件過程管理等。這都是些實用性很強的知識,但學(xué)生接受起來比較困難。這些都是軟件工程的內(nèi)容,但不可能在這門課中完全涉獵,怎么做好軟件工程課程與這些新型技術(shù)的橋接,很關(guān)鍵,僅僅用傳統(tǒng)的教學(xué)方法實施起來存在著不小的障礙。
4、實踐開發(fā)存在難度
在教學(xué)中,如果只是單純的進行枯燥模糊的課堂教學(xué),而學(xué)生沒有親身開發(fā)體驗,學(xué)生僅憑課堂和書本得來的知識理解軟件工程很難,以至于學(xué)完之后覺得用處不大。要讓學(xué)生相信和理解軟件工程對軟件開發(fā)的重要性,就是在學(xué)習(xí)期間完成一個中型左右的軟件開發(fā)。但這種方法顯得太復(fù)雜太耗時,加上這門課一般在大三下學(xué)期以后開設(shè),時間上來不及,對教師和學(xué)生的要求又很高,并不適合初次接觸軟件工程的學(xué)生教學(xué)實踐。
5、對教師的要求高
要講好這門課有對授課教師有一定難度。教師首先要有一定的軟件開發(fā)經(jīng)驗,了解軟件項目的管理和工程背景,這樣才能在講授時結(jié)合實際,可操作性強。學(xué)生能直觀地感覺到該門課程的重要性。
三、教學(xué)“三段論”的提出
針對以上軟件工程課程在教與學(xué)中存在的問題,根據(jù)學(xué)生的認識特點及本門課自身的特點,在傳統(tǒng)的教學(xué)思路上,借助先進的現(xiàn)代企業(yè)管理理念及軟件模式,提出以本課程為研究點、通用性較強的教學(xué)理論――“1”個中心“3”個基本點。
“1”個中心:即能力驅(qū)動。教學(xué)工作的展開是以提高學(xué)生能力為主要目的,這是個能力絕對高于學(xué)歷的社會需求現(xiàn)實,那么,對于大學(xué)這樣一個學(xué)生人生觀、價值觀、世界觀形成的關(guān)鍵階段,提出能力驅(qū)動的教學(xué)教育目標,是與時代發(fā)展相吻合的。
“3”個基本點:指教學(xué)三段論,即學(xué)科知識的進化,應(yīng)用能力的強化和人才素質(zhì)的優(yōu)化。三者是一個“交叉握手”的關(guān)系,互相補充、相互促進,成為一個羅旋式滾動前進的體系結(jié)構(gòu)體。三者之間,又存在著滲透與提升的關(guān)系,“學(xué)科知識的進化”,即根據(jù)信息化軟件開發(fā)需求,在原有知識體系的基礎(chǔ)上進行有效地擴充,循序漸進地做到新舊知識的過渡,實現(xiàn)進化的目的;“應(yīng)用能力的強化”,這是從教學(xué)目的提出的理念,最終通過該門課從理論到實踐增加學(xué)生的動手應(yīng)用能力才是最主要的,當然,這需要“學(xué)科知識的進化”的推進為前提,并在其中進行交叉實行;“人才素質(zhì)的優(yōu)化”,這是整個高校的培養(yǎng)目標。對于軟件工程這門學(xué)科,表征這一觀點的現(xiàn)實意義,就是整個軟件人才質(zhì)量的提高,及快速融入IT行業(yè)、或者更快地實現(xiàn)生存生活應(yīng)便適應(yīng)能力的加強。三者是相輔相承的內(nèi)在邏輯?!?”個中心“3”個基本點的關(guān)系如圖1所示。
四、“1”個中心“3”個基本點對《軟件工程》的層次化模式設(shè)計
圖1中,“3”個基本點緊緊圍繞“1”個中心,為實現(xiàn)能力驅(qū)動的教育目的,旋轉(zhuǎn)式實施學(xué)生的培養(yǎng)方案。
對于軟件工程這門課程,在教學(xué)管理模型的規(guī)約下,提出層次化的課程展開模式。下文從教材設(shè)置、人才培養(yǎng)等方面進行柔性內(nèi)聚耦合度的統(tǒng)一論述。
1.處理好軟件工程前驅(qū)、后繼課程的合理設(shè)置
軟件工程是高校課程中的一門必修課,在此課程的設(shè)置上必須要理清它開設(shè)的背景及后延?!氨尘啊奔幢菊n的前驅(qū)課程,在課開設(shè)之前必須要學(xué)習(xí)的幾門基礎(chǔ)課,沒有這些課軟件工程的教學(xué)也就形同虛設(shè)。比如一門面向過程的編程語言、初步的面向?qū)ο蠹夹g(shù)、略見規(guī)模的程序開發(fā)等,讓學(xué)生在實際操練中,發(fā)現(xiàn)開發(fā)程序中潛在的一些問題,體會到軟件開發(fā)決不僅僅就是“個人英雄主義”的表演,它是有“規(guī)矩”的。那么這些“規(guī)矩”需要怎樣更好地把握呢,學(xué)生自己帶著問題找到了學(xué)習(xí)的切入點,再引入本門課學(xué)習(xí),效果就大不一樣了。
軟件工程開設(shè)一般設(shè)在大三下學(xué)期、大四上學(xué)期這個時間段,在學(xué)生了解了軟件工程的思路之后,開設(shè)一定的后繼課程也是必要的,比如,軟件設(shè)計模式、軟件項目管理、系統(tǒng)分析設(shè)計師教程等交叉學(xué)科,畢竟高校培養(yǎng)學(xué)生不僅僅是本著一個高級程序員的目的,學(xué)生在以后的發(fā)展中具有駕馭整個項目的能力培養(yǎng),也是必須的。
2.不拘泥一本教材和內(nèi)容次序,以符合學(xué)生特點施展課程與實踐結(jié)合
現(xiàn)在在市面上,有關(guān)軟件工程的教材即多又雜,但內(nèi)容的流程走向是大同小異。學(xué)生拿到的只有一本教材,但不能讓學(xué)生僅僅地得到這一本書,這樣,授課教師就需要閱讀多量相關(guān)類似的書籍,靈活變通地處理課本與參考資料的關(guān)系,變成自己的系統(tǒng)化知識結(jié)構(gòu)傳授。并在課堂上,以親身的經(jīng)驗把學(xué)生從課本上引入到實際的開發(fā)環(huán)境中,做到理論與實踐相結(jié)合,這是受學(xué)生歡迎的。
3.“吃透”教材,合理引入最新的前沿技術(shù),擴大學(xué)生的知識面
擺在面前的任何一本計算機書都是過世的,而技術(shù)是在不停地向前發(fā)展的,但內(nèi)容雖舊,思路卻是清晰的。老師在“吃透”教材把握住思路之后,就可以以該思路為準繩,把最新的技術(shù)經(jīng)驗恰當?shù)貐R總。實踐表明,新事物更能夠吸引學(xué)生的好奇心,那么教師就需做到新技術(shù)與基礎(chǔ)理論的融會貫通,一方面擴充了學(xué)生的知識面,另一方面又使枯燥的知識以變通的方式被學(xué)生掌握,達到授課目的。
4.端正學(xué)生的學(xué)習(xí)態(tài)度,幫助學(xué)生發(fā)現(xiàn)自己的興趣點
經(jīng)多次與學(xué)生交談發(fā)現(xiàn),學(xué)生很容易進入了一個怪圈:學(xué)了不少專業(yè)課,就是不知道它到底有什么用,專業(yè)課之間有什么關(guān)聯(lián),為什么開設(shè)這門課,一頭霧水,其實從來就沒想過這些問題。導(dǎo)致了一種學(xué)習(xí)的畸形態(tài),學(xué)得東西沒覺出有用,自己也不知道該學(xué)什么才有用,畢業(yè)的時候,發(fā)現(xiàn)最無用的不是課,是自己。所以,授課教師以及輔導(dǎo)員在學(xué)生的學(xué)習(xí)中要積極和他們交流,讓學(xué)生盡快地找到對本專業(yè)的興奮點,以點為面,展開大學(xué)的知識構(gòu)建。學(xué)生一旦知道了自己想做什么,什么是自己的興趣,學(xué)習(xí)起來有目的性,學(xué)得上心,效果有效。
5.引導(dǎo)學(xué)生會學(xué)習(xí),提高自學(xué)和自主發(fā)現(xiàn)問題的能力
新時代的文盲是不會學(xué)習(xí)不知道學(xué)什么的人。很多學(xué)生迷茫,不是覺得自己什么也不會,該學(xué)的東西太多,從哪開始,以后要干什么,找不到路子。就是眼高手低,什么都懂,什么都不精。引導(dǎo)學(xué)生發(fā)現(xiàn)問題,提高自學(xué)的能力很重要。教師不可能是個百寶箱,什么都通什么都會,學(xué)生怎么樣在這樣的學(xué)習(xí)生活中,能夠像軟件工程所倡導(dǎo)的理念一樣,階段性、漸入式地自我培養(yǎng),值得思考。這是項雙贏活動,既提高了學(xué)生的能力,又把軟件工程真正落到了實處。學(xué)生,就是我們的軟件項目。
6.授課教師要從廣度和深度兩方面,提高自身新舊知識的駕馭水平
在整個教學(xué)過程中,教師扮演了很重要的角色。教師的素質(zhì)對于教育這項工程至關(guān)重要。學(xué)在人力物力財力允許的情況下,應(yīng)多給教師外出充電的機會,接觸新型的技術(shù)與理念。特別對于計算機這個日新月異的專業(yè),經(jīng)常地到大公司去實踐是很好的學(xué)習(xí)方式。教師把充電掌握的新技術(shù)新發(fā)明及時帶到課堂,進一步體現(xiàn)知識的靈活性和發(fā)展性,這樣的課更受歡迎。
五、達到的效果
作者在對本科大四學(xué)生開設(shè)《面向?qū)ο蠹夹g(shù)UML》、《軟件設(shè)計與開發(fā)》及《軟件項目管理》等軟件工程的前沿分支課程,以及對《軟件工程》、《管理學(xué)》等基礎(chǔ)交叉課深度學(xué)習(xí)后,提出軟件工程教學(xué)與管理學(xué)結(jié)合的思路。在教學(xué)中,按照“1”+“3”模式,積極采用啟發(fā)性教學(xué),按照從實際發(fā)現(xiàn)問題、找出原因、解決問題的步驟展開課堂教學(xué),結(jié)合自身的實際軟件開發(fā)經(jīng)驗和對新型技術(shù)的了解與運用,活躍課堂氣氛,擴大學(xué)生的知識面,受到了學(xué)生的認可,達到預(yù)期效果。
經(jīng)上文論述,說明了一個道理:知識是扁平的,不同專業(yè)之間是互通的。
六、結(jié)論
本文以《軟件工程》為研究點,提出了能力驅(qū)動下的旋轉(zhuǎn)式素質(zhì)教育培養(yǎng)模式,從學(xué)科知識的進化、應(yīng)用能力的強化、人才素質(zhì)的優(yōu)化方面,分析了現(xiàn)階段授課中存在的問題,在原有經(jīng)典教學(xué)理論基礎(chǔ)上,大膽創(chuàng)新,提出了柔性培養(yǎng)、層次化遞進的理論,在實踐中取得了不錯的成績。同時,此觀點可以嫁接到其他學(xué)科,希望能給在教育戰(zhàn)線的教師們一點啟示,把高等教育質(zhì)量再提一個臺階。
參考文獻
[1]傅鉛生.CMM對軟件工程中的過程管理和改進作用研究[J]. 測控技術(shù),2005年第24卷第1期
[2]孫為軍.“軟件工程”課程的教學(xué)研究與實踐[J].廣東工業(yè)大學(xué)學(xué)報,第5卷,2005年9月
[3]楊青,劉洪星.軟件工程學(xué)科的特征及其課程體系設(shè)計原則[J].武漢理工大學(xué)學(xué)報,第27卷第2期,2005年4月
[4]文俊浩,楊丹,陳林等.軟件工程人才培養(yǎng)體系研究與實踐[J].高等工程教育研究,第4期2005年
[5]張長森,王輝,雒芬.軟件工程課程教學(xué)體系研究[J].理工高教研究,第24卷第1期2005年2月
[6]方木云,周兵.軟件工程課程雙語教學(xué)研究與實踐[J].安徽工業(yè)大學(xué)學(xué)報,第22卷第5期2005年9月