戴建國 秦懷斌
摘要:本文對軟件工程的課程特點(diǎn)進(jìn)行了簡單論述,并分析了該課程當(dāng)前教學(xué)存在的問題,以及實(shí)踐教學(xué)的重要意義和實(shí)施方法,最后討論了在實(shí)操環(huán)節(jié)中需要注意的問題。
關(guān)鍵詞:軟件工程;實(shí)踐教學(xué);案例教學(xué);課程設(shè)計(jì);面向?qū)ο?/p>
中圖分類號:G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2019)24-0164-03
軟件工程是計(jì)算機(jī)專業(yè)的核心課程,主要講授軟件過程模型、軟件需求、分析與設(shè)計(jì)、軟件維護(hù)與管理等方面的知識。本課程的開設(shè)旨在使學(xué)生掌握軟件項(xiàng)目開發(fā)和維護(hù)的一般過程和軟件開發(fā)常用的過程模型,能用軟件工程的方法參與軟件項(xiàng)目的分析、設(shè)計(jì)、實(shí)現(xiàn)和維護(hù),為更深入地學(xué)習(xí)和以后從事軟件項(xiàng)目開發(fā)打下良好的基礎(chǔ)。軟件工程存在以下特點(diǎn):(1)軟件工程的思想對于軟件行業(yè)來說至關(guān)重要;(2)理論很重要,但是實(shí)踐是理論的出發(fā)點(diǎn)和歸宿,只有通過實(shí)踐去學(xué)習(xí)理論并通過理論去指導(dǎo)實(shí)踐,理論的學(xué)習(xí)才有意義;(3)軟件行業(yè)發(fā)展非常迅猛,新技術(shù)層出不窮。軟件工程的這三個(gè)特點(diǎn)決定了軟件工程這門課程必須跟實(shí)踐緊密結(jié)合才能真正地學(xué)活、學(xué)好,實(shí)現(xiàn)開設(shè)這門課的初衷和意義。
一、軟件工程的教學(xué)現(xiàn)狀
我國各大專院校的計(jì)算機(jī)或者相關(guān)專業(yè)都開設(shè)《軟件工程》課程,受傳統(tǒng)教學(xué)思想影響,目前大學(xué)教育大部分還是以“填鴨”方式給學(xué)生灌輸理論知識,對于軟件工程這樣的工程性課程也不例外,教師在課堂上大講理論,由于學(xué)生沒有實(shí)踐的機(jī)會,對理論的掌握一知半解,從而總是認(rèn)為軟件工程太難。仔細(xì)分析在軟件工程的授課過程中存在以下現(xiàn)象:
1.授課采用傳統(tǒng)的講理論的方式。比如在講軟件開發(fā)模型時(shí)還是采用課件+圖表的方式講軟件生命周期的理論,學(xué)生很難想象某種軟件過程的使用場合到底是怎樣的;對于常用的CASE(計(jì)算機(jī)輔助軟件工程)工具也只是演示其中的某幾種,學(xué)生沒有親自體會的機(jī)會;講分析和設(shè)計(jì)時(shí)也只是臨時(shí)舉一些小例子以當(dāng)時(shí)能說明問題為標(biāo)準(zhǔn)。這些理論之間連貫性比較差,可能當(dāng)時(shí)聽明白了,但是面對實(shí)踐還是茫然,沒有真正掌握。導(dǎo)致學(xué)生普遍認(rèn)為軟件工程很枯燥,學(xué)習(xí)興趣不高,很難真正地掌握理論知識,甚至不明白這門課跟軟件開發(fā)之間是什么關(guān)系。
2.內(nèi)容陳舊。計(jì)算機(jī)科學(xué)發(fā)展非常迅速,很多知識的更新?lián)Q代也就是2—3年的時(shí)間,而相應(yīng)教科書的更新無法跟上知識更新的速度,甚至落后很多,如果僅僅講授教科書上的內(nèi)容,將會造成學(xué)和用的嚴(yán)重脫節(jié)。比如現(xiàn)在很多軟件工程的教材還在用大量的篇幅講瀑布模型、螺旋模型等,而對于現(xiàn)在研究的很熱的統(tǒng)一過程(UP)卻很少提及,或一帶而過,對于現(xiàn)在同樣火熱的敏捷軟件開發(fā)甚至都未曾提及。在分析和設(shè)計(jì)的部分也存在同樣的問題,很多教材講結(jié)構(gòu)化分析和設(shè)計(jì)多,對于面向?qū)ο蟛糠忠采婕暗幂^少,但是現(xiàn)在面向?qū)ο蠹夹g(shù)卻是研究的重點(diǎn),學(xué)生自學(xué)也相對較難。造成的結(jié)果是學(xué)生工作后發(fā)現(xiàn)學(xué)過的知識能用到的很少。
3.實(shí)踐環(huán)節(jié)很弱。有些高校的軟件工程課程沒有實(shí)踐環(huán)節(jié),有的高校即使開設(shè)了課程設(shè)計(jì),但課程設(shè)計(jì)的質(zhì)量很低,沒有達(dá)到有效的檢驗(yàn)?zāi)康摹?/p>
4.考核方法有限。由于實(shí)踐的缺失,考核時(shí)采用傳統(tǒng)的作業(yè)+筆試的方式,成績評定還是依靠在課堂上所學(xué)的干巴巴的理論和似是而非的概念,很難反映學(xué)生對軟件工程真正的掌握情況。
二、原因分析
軟件工程的教學(xué)往往容易忽視軟件工程實(shí)踐性強(qiáng)的特點(diǎn),使得這門課老師不好教,學(xué)生不好學(xué),教學(xué)效果不理想,為什么會有這樣的問題呢?認(rèn)真分析認(rèn)為存在以下原因:
1.傳統(tǒng)教學(xué)思想根深蒂固。編程語言類的課程實(shí)踐起來比較容易,題目提出后學(xué)生編程實(shí)現(xiàn)就可以了,也很容易檢查和評定學(xué)生的掌握情況。而軟件工程本身來源于實(shí)踐,學(xué)生對這門課的學(xué)習(xí)方法應(yīng)該是:從實(shí)踐中學(xué)習(xí),到實(shí)踐中檢驗(yàn)。要實(shí)踐就必須以項(xiàng)目為依托,在項(xiàng)目中實(shí)踐,而合適的項(xiàng)目很難找。而且很多軟件工程的知識很難單獨(dú)實(shí)踐,如果沒有一定的軟件開發(fā)經(jīng)驗(yàn),學(xué)習(xí)這些軟件工程的理論就會很抽象。傳統(tǒng)教學(xué)經(jīng)驗(yàn)在軟件工程的授課過程中很難起到好的作用。
2.高中教育的遺留問題。軟件工程的實(shí)踐過程要求學(xué)生有較好的理解能力、與人交流快速獲取信息的能力、從表面現(xiàn)象找出問題實(shí)質(zhì)的能力、分析和解決問題的能力、快速的文檔閱讀與寫作能力等。高中階段的過早分科使得理工科大學(xué)生文檔寫作能力較弱,也害怕寫文檔。
3.實(shí)驗(yàn)設(shè)計(jì)困難。軟件工程的方法和技術(shù)都是軟件開發(fā)實(shí)踐的經(jīng)驗(yàn)總結(jié),實(shí)驗(yàn)需建立在合適的項(xiàng)目上,在項(xiàng)目實(shí)踐過程中運(yùn)用理論知識。不像傳統(tǒng)的實(shí)驗(yàn)?zāi)菢痈鱾€(gè)實(shí)驗(yàn)之間沒有關(guān)聯(lián)性,一個(gè)實(shí)驗(yàn)考察某一個(gè)方面的知識,軟件工程的實(shí)驗(yàn)之間的關(guān)聯(lián)性很強(qiáng),比如需求分析是系統(tǒng)概要設(shè)計(jì)的前提,概要設(shè)計(jì)是詳細(xì)設(shè)計(jì)的前提等等,合適的項(xiàng)目比較難找,所以實(shí)驗(yàn)設(shè)計(jì)困難。
4.軟件技術(shù)發(fā)展迅猛,新技術(shù)層出不窮,比如幾年前web開發(fā)是java和.net的競爭,現(xiàn)在動(dòng)態(tài)語言成了異軍突起的第三股力量。以前函數(shù)式語言僅限于實(shí)驗(yàn)室或者一些專用領(lǐng)域,一直沒有很流行,現(xiàn)如今它的復(fù)興幾乎可以被人們預(yù)料。極限編程的很多理念是對于傳統(tǒng)軟件工程思想的一個(gè)顛覆,而現(xiàn)在敏捷與UP的結(jié)合使用又成為人們應(yīng)用這兩者的新方法。新的語言和新的軟件開發(fā)過程讓人眼花繚亂,教師的課堂和實(shí)驗(yàn)教學(xué)很難完全跟上新技術(shù)的發(fā)展,使得學(xué)與用之間很容易存在一定的脫節(jié)現(xiàn)象。
三、實(shí)踐教學(xué)的意義
設(shè)置軟件工程課程的目的在于:通過這門課的學(xué)習(xí)使學(xué)生了解軟件生命周期、軟件過程、方法以及相應(yīng)的工具,理解軟件開發(fā)的工程化思想,熟悉通用的軟件開發(fā)過程和常用的CASE工具,這些知識都是人們從實(shí)踐中獲得,也應(yīng)該在實(shí)踐中去學(xué)習(xí)。針對軟件工程的教學(xué)現(xiàn)狀,開展實(shí)踐教學(xué)的意義在于:首先實(shí)踐教學(xué)過程遵循了軟件生命周期和規(guī)律,順應(yīng)了軟件工程這門學(xué)科的特點(diǎn),即源于實(shí)踐、為了實(shí)踐,使學(xué)生親身體會問題的提出,并自然而然地理解解決方案的意義;其次實(shí)踐過程本身就是一個(gè)開放的過程,必須要了解社會對軟件人才的需求及發(fā)展現(xiàn)狀,這樣的教學(xué)才具有針對性,培養(yǎng)出來的人才也更符合社會的需要。所以打破傳統(tǒng)教學(xué)思想的禁錮,全面開展實(shí)踐教學(xué)應(yīng)該是軟件工程課程教學(xué)的一個(gè)好方法。
四、實(shí)踐教學(xué)的實(shí)施
實(shí)踐教學(xué)是一種教學(xué)方法,并不僅僅限于開設(shè)實(shí)驗(yàn)或者課程設(shè)計(jì)。實(shí)踐教學(xué)的思想應(yīng)該貫穿于教學(xué)工作的各個(gè)方面,總結(jié)一下有以下幾個(gè)著手點(diǎn):
1.案例教學(xué)。在教學(xué)過程中,以某個(gè)案例貫穿整個(gè)理論教學(xué)活動(dòng),最好是某個(gè)軟件公司的實(shí)際項(xiàng)目或者某個(gè)科研課題。從項(xiàng)目的可行性論證到最終項(xiàng)目驗(yàn)收完成,跨越軟件的整個(gè)生命周期。比如在講需求時(shí),可以從實(shí)際做需求的過程出發(fā),講解需求管理的方法、采用的工具、需求分析的過程、用例圖、概念模型圖等等;在講系統(tǒng)分析和設(shè)計(jì)時(shí),可以一點(diǎn)點(diǎn)引導(dǎo)學(xué)生從系統(tǒng)的概念透視圖過渡到軟件透視圖,講解部分交互圖和類圖以及相應(yīng)的代碼映射,讓學(xué)生去完成剩下的部分,再對比結(jié)果查找不足之處。這樣結(jié)合活生生的實(shí)例有利于激起學(xué)生的學(xué)習(xí)興趣并使其快速掌握理論知識。
2.開設(shè)連貫性的實(shí)驗(yàn)。在設(shè)計(jì)實(shí)驗(yàn)時(shí),不能孤立地設(shè)計(jì)每個(gè)實(shí)驗(yàn),應(yīng)該先設(shè)計(jì)好一些小的項(xiàng)目,然后對學(xué)生分組,大概4—5個(gè)人一個(gè)小組,每個(gè)小組一個(gè)題目,進(jìn)行團(tuán)隊(duì)開發(fā),隨著教學(xué)過程的深入,項(xiàng)目也在不斷完善,最終,課程完畢時(shí),一個(gè)項(xiàng)目也就完成了,這個(gè)項(xiàng)目可以作為學(xué)生最終成績的一個(gè)重要部分。在開發(fā)項(xiàng)目的過程中,學(xué)生一定會遇到很多的困惑,這些困惑不是在學(xué)習(xí)某一門語言時(shí)做一個(gè)小實(shí)驗(yàn)可以遇到的,帶著問題去學(xué)習(xí)軟件工程的知識學(xué)得快,掌握得牢固,可以說只有這樣,才能把知識轉(zhuǎn)化成自己的能力。而且在完成項(xiàng)目過程中同時(shí)可以大大提高編寫代碼的能力,這些能力是在編程語言課上無法得到提高的,也是作為一個(gè)軟件開發(fā)人員必備的。
3.增加課程設(shè)計(jì)。如果在實(shí)驗(yàn)中完成的項(xiàng)目比較簡單,需要進(jìn)一步鞏固所學(xué)的知識,可以增加課程設(shè)計(jì)的內(nèi)容,或者把實(shí)驗(yàn)的內(nèi)容與課程設(shè)計(jì)的內(nèi)容結(jié)合起來,由于實(shí)驗(yàn)時(shí)間有限,很多知識點(diǎn)當(dāng)時(shí)分配的時(shí)間少,可以增加課程設(shè)計(jì)作為實(shí)驗(yàn)項(xiàng)目的延續(xù)。
4.增大面向?qū)ο蟮膬?nèi)容。面向?qū)ο蠹夹g(shù)是研究的熱點(diǎn),幾乎在各種分析和設(shè)計(jì)過程中都可以用到面向?qū)ο蠹夹g(shù),而且面向?qū)ο蟮姆治龊驮O(shè)計(jì)能力也非常需要在實(shí)踐中增強(qiáng),所以在課堂教學(xué)和實(shí)驗(yàn)過程中應(yīng)該要求學(xué)生用面向?qū)ο蟮募夹g(shù)去分析和解決問題。
5.在重點(diǎn)突出的前提下增加知識面,具備一定的寬度。技術(shù)發(fā)展日新月異,新技術(shù)層出不窮,或者老技術(shù)重新煥發(fā)生命力也很常見,在軟件工程教學(xué)過程中應(yīng)該注重授課的知識面需要有一定的寬度,對于重點(diǎn)的知識點(diǎn)要有深度。就是讓學(xué)生在基礎(chǔ)扎實(shí)的前提下對軟件發(fā)展的現(xiàn)狀有一定的了解,以便他們在眾多令人眼花繚亂的技術(shù)中選擇自己感興趣和認(rèn)為有前途的方向提前努力。
五、實(shí)踐教學(xué)存在的問題
實(shí)踐教學(xué)包含兩個(gè)層面的意思,一是教師和學(xué)生雙方都必須拋棄習(xí)慣的教學(xué)方法,在實(shí)踐中教(案例教學(xué))與學(xué)(實(shí)驗(yàn)或課程設(shè)計(jì));二是教學(xué)活動(dòng)要根據(jù)技術(shù)發(fā)展和社會需要的實(shí)際出發(fā),既教給學(xué)生核心技術(shù),又緊跟時(shí)代發(fā)展,這也是計(jì)算機(jī)學(xué)科的發(fā)展特點(diǎn)所決定的。實(shí)踐教學(xué)要真正落實(shí)對教師和學(xué)生都提出了更高的要求,首先雙方都要脫離傳統(tǒng)的教與學(xué)的思想,在教學(xué)活動(dòng)中堅(jiān)持從實(shí)踐中來到實(shí)踐中去,在實(shí)踐中獲取和檢驗(yàn)知識;其次雙方都必須保持高度的學(xué)習(xí)熱情,尤其是教師。新技術(shù)發(fā)展太快,要不斷地學(xué)習(xí)和實(shí)踐,否則實(shí)踐教學(xué)就是一句空話;再次,實(shí)驗(yàn)項(xiàng)目的設(shè)計(jì)和考核比較困難,已有的經(jīng)驗(yàn)比較少,需要摸索和嘗試。這些都是在施行實(shí)踐教學(xué)過程中所面臨的問題,既有主觀因素,也有客觀因素,對教師和學(xué)生都提出了很高的要求,需要在不斷的實(shí)踐中克服。
六、結(jié)語
軟件工程課程的重要性往往被忽視,使得教和學(xué)都處在一個(gè)比較尷尬的地位。學(xué)生在進(jìn)入工作崗位之前并沒有做好這方面的準(zhǔn)備,覺得能寫一些程序,掌握了一些編程語言就是學(xué)好了計(jì)算機(jī)專業(yè),能夠勝任軟件開發(fā)的工作,大量低劣的軟件被重復(fù)制造。據(jù)統(tǒng)計(jì)現(xiàn)在有超過10%的軟件公司連版本控制工具都沒有,此現(xiàn)狀令人堪憂。大學(xué)是向社會輸送人才的重要基地,在大學(xué)教育的過程中教給學(xué)生規(guī)范的軟件開發(fā)方法和良好的軟件工程思想是非常重要的,實(shí)踐教學(xué)并不是全新的教學(xué)思想,但將它運(yùn)用于軟件工程的教學(xué)是一種可以探索的教學(xué)模式,還存在很多需要解決的問題。
參考文獻(xiàn):
[1]秦懷斌,戴建國.《軟件項(xiàng)目管理》課程分組討論式教學(xué)探討[J].教育教學(xué)論壇,2018,(22):183-184.
[2]李昕,劉益先,程維.軟件工程專業(yè)工程化實(shí)踐教學(xué)體系的建設(shè)與改革[J].計(jì)算機(jī)教育,2018,(11):49-52.
[3]王峰,韓苗苗.軟件工程專業(yè)學(xué)生工程能力培養(yǎng)模式的研究與實(shí)踐[J].課程教育研究,2018,(38):224-225.
[4]付麗梅,李緒成,任長寧.基于OBE的軟件工程專業(yè)一體化實(shí)踐教學(xué)體系改革[J].計(jì)算機(jī)教育,2018,(09):145-148.