摘要:本文分析了“軟件工程基礎(chǔ)”課程在軟件學(xué)院課程體系中的定位,探討了“軟件工程基礎(chǔ)”教學(xué)的指導(dǎo)思想和課程重點(diǎn),指出軟件工程基本理論和概念的教學(xué)內(nèi)容應(yīng)體現(xiàn)平臺(tái)性和框架性,在課程項(xiàng)目實(shí)踐中要注重項(xiàng)目和過(guò)程管理、組織和管理能力、團(tuán)隊(duì)精神等的培養(yǎng)。
關(guān)鍵詞:軟件工程;課程;教學(xué)改革
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1672-5913(2007)08-0034-03
1 軟件工程類(lèi)的課程結(jié)構(gòu)
軟件工程最初是作為一個(gè)知識(shí)域在計(jì)算機(jī)科學(xué)與技術(shù)的課程體系中出現(xiàn)的,隨著信息產(chǎn)業(yè)的發(fā)展,軟件工程逐漸發(fā)展成為一門(mén)獨(dú)立的學(xué)科,并擁有了一整套的課程體系。對(duì)于軟件工程專(zhuān)業(yè)人才的培養(yǎng)來(lái)說(shuō),作為產(chǎn)業(yè)決策、職業(yè)認(rèn)證和課程教育的依據(jù),由美國(guó)IEEE的計(jì)算機(jī)協(xié)會(huì)(IEEE—CS)和ACM聯(lián)合公布的2004版《軟件工程知識(shí)體系指南》(SWEBOK,Software Engineering Body of Knowledge)是十分值得關(guān)注和借鑒的。在SWEBOK中,軟件工程學(xué)科被分解為10個(gè)知識(shí)域:軟件需求、軟件設(shè)計(jì)、軟件構(gòu)造、軟件測(cè)試、軟件維護(hù)、軟件配置管理、軟件工程管理、軟件工程過(guò)程、軟件工程工具與方法、軟件質(zhì)量[1]。
示范性軟件學(xué)院強(qiáng)調(diào)按學(xué)生需求設(shè)置課程,尤其是計(jì)算機(jī)專(zhuān)業(yè)的人才培養(yǎng)模式和課程設(shè)置的區(qū)別[2]。軟件學(xué)院和常規(guī)的計(jì)算機(jī)專(zhuān)業(yè)在“軟件工程基礎(chǔ)”課程的教學(xué)要求上存在較大的區(qū)別。在計(jì)算機(jī)專(zhuān)業(yè)的課程體系中,除“軟件工程基礎(chǔ)”課程外的其他軟件工程類(lèi)課程就較少了。而“軟件工程基礎(chǔ)”課程在軟件學(xué)院的課程體系中更多地是作為專(zhuān)業(yè)平臺(tái)課程出現(xiàn)的,它需要總攬所有軟件工程知識(shí)域的要點(diǎn),為其他課程的學(xué)習(xí)打好基礎(chǔ)。另外,“軟件工程基礎(chǔ)”課程提供的課程實(shí)踐也需要為其他各個(gè)知識(shí)域的深入學(xué)習(xí)提供實(shí)踐經(jīng)驗(yàn)和體會(huì)。表1是浙江大學(xué)軟件學(xué)院本科教學(xué)體系中與軟件工程相關(guān)的課程情況。
“軟件工程基礎(chǔ)”是軟件學(xué)院本科階段重要的基礎(chǔ)課程之一,這是由軟件工程在軟件產(chǎn)業(yè)中的重要地位所決定的。本文根據(jù)在浙江大學(xué)軟件學(xué)院的教學(xué)實(shí)踐,通過(guò)分析“軟件工程基礎(chǔ)”課程在軟件學(xué)院課程體系中的定位,探討該課程的目標(biāo)、教學(xué)內(nèi)容和方法等。
2 教學(xué)內(nèi)容
根據(jù)在課程體系中的定位,軟件工程基本理論和概念的教學(xué)內(nèi)容應(yīng)體現(xiàn)平臺(tái)性和框架性。軟件工程是一種層次化的技術(shù),它的學(xué)科內(nèi)容主要包括過(guò)程、方法和工具。過(guò)程是將技術(shù)結(jié)合在一起的凝聚力,使得計(jì)算機(jī)軟件能夠被合理和及時(shí)地開(kāi)發(fā),而支持軟件工程的根基是對(duì)質(zhì)量的關(guān)注。所以在實(shí)際教學(xué)中應(yīng)著重于軟件工程的整體性,了解整個(gè)知識(shí)體系的內(nèi)容,不必每個(gè)細(xì)節(jié)都深入完整。在后續(xù)的課程中,將會(huì)對(duì)軟件工程的每個(gè)知識(shí)域做深入的介紹,如需求分析、軟件測(cè)試等。
我們選用了Roger Pressman的經(jīng)典教材《軟件工程·實(shí)踐者之路》(影印版,清華大學(xué)出版社),主要教學(xué)內(nèi)容包括軟件產(chǎn)品與過(guò)程、項(xiàng)目管理、傳統(tǒng)軟件工程方法學(xué)、面向?qū)ο筌浖こ痰?。軟件工程是發(fā)展非??斓囊粋€(gè)研究及應(yīng)用領(lǐng)域,很多新概念并沒(méi)有相應(yīng)的中文術(shù)語(yǔ),硬性翻譯既不自然也不便于理解。多年來(lái)我們一直采取雙語(yǔ)教學(xué),除了課堂講解中部分使用中文以外,其他環(huán)節(jié)(包括課件、習(xí)題、大型實(shí)驗(yàn)項(xiàng)目說(shuō)明、各階段實(shí)踐報(bào)告、考試等)都使用英文,使學(xué)生理解原汁原味的概念和術(shù)語(yǔ)。同時(shí)引導(dǎo)他們直接閱讀國(guó)際軟件工程權(quán)威們定期召開(kāi)的研討會(huì)報(bào)告原文,理解大師們的觀點(diǎn)和軟件工程技術(shù)的發(fā)展趨勢(shì),培養(yǎng)學(xué)生自主學(xué)習(xí)的能力以及日后國(guó)際交流的能力。
在教學(xué)中,我們特別注重教學(xué)內(nèi)容與軟件企業(yè)實(shí)踐的相結(jié)合,與國(guó)內(nèi)外多家企業(yè)合作辦學(xué),并經(jīng)常邀請(qǐng)企業(yè)的管理和技術(shù)人員到學(xué)校來(lái)講學(xué)。
課堂理論教學(xué)的目的是使學(xué)生掌握軟件工程的基本概念、原理和方法,并且還要培養(yǎng)學(xué)生嚴(yán)謹(jǐn)求實(shí)的科學(xué)態(tài)度和合作精神,激發(fā)他們的創(chuàng)新意識(shí)和創(chuàng)業(yè)精神。我們改革了考試形式,采用開(kāi)卷方式,改進(jìn)筆試內(nèi)容,將需要背誦或能夠直接從書(shū)上找到的考核內(nèi)容減少到卷面成績(jī)的30%以下,使其更能反映學(xué)生對(duì)軟件工程思想的理解和運(yùn)用,目的是盡量避免學(xué)習(xí)中的死記硬背、不求甚解的現(xiàn)象,注重對(duì)分析問(wèn)題解決問(wèn)題能力的考核。
3 課程實(shí)踐
軟件工程的研究在短短三十多年的時(shí)間里飛速發(fā)展,內(nèi)容更新快且覆蓋面非常廣泛。對(duì)軟件工程的理論、方法的掌握需要讀者具有一定的實(shí)踐經(jīng)驗(yàn)才能真正領(lǐng)會(huì)其中的精髓,所以我們?cè)谲浖こ陶n程教學(xué)中,特別注意避免空洞的理論灌輸,強(qiáng)調(diào)理論與實(shí)踐并重的教學(xué)理念。教學(xué)安排中除了32學(xué)時(shí)的理論教學(xué)之外,還有32學(xué)時(shí)的課程實(shí)踐。
考慮到在課程體系中的定位,軟件工程的課程實(shí)踐并不追求最終開(kāi)發(fā)的軟件成果的完善性和某個(gè)單項(xiàng)技術(shù)的深入。我們的目標(biāo)是通過(guò)在課程實(shí)踐中的系統(tǒng)分析與設(shè)計(jì)、軟件項(xiàng)目管理、合作與交流等方面的訓(xùn)練,培養(yǎng)學(xué)生綜合運(yùn)用軟件工程的過(guò)程、方法等知識(shí)開(kāi)發(fā)實(shí)際項(xiàng)目的能力。在項(xiàng)目實(shí)踐中要注重的是項(xiàng)目和過(guò)程管理、組織和管理能力的培養(yǎng),為學(xué)生在今后的相關(guān)課程學(xué)習(xí)中打下良好的基礎(chǔ)。
在課程實(shí)踐中布置大型模擬案例,將學(xué)生劃分為6~10人的小組,分工合作,共同完成該模擬項(xiàng)目。課程實(shí)踐隨理論教學(xué)進(jìn)展布置需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試、維護(hù)(版本升級(jí))等任務(wù)。要求每個(gè)小組進(jìn)行項(xiàng)目管理和過(guò)程管理的實(shí)踐,給學(xué)生上臺(tái)報(bào)告的機(jī)會(huì),從而訓(xùn)練學(xué)生的分析能力、開(kāi)發(fā)能力、組織能力和表達(dá)能力,并培養(yǎng)團(tuán)隊(duì)精神。
為培養(yǎng)學(xué)生的組織和管理能力,在課程實(shí)踐中我們要求每組對(duì)個(gè)人的分工上不是簡(jiǎn)單地采取分系統(tǒng)模塊的方法,而是鼓勵(lì)按過(guò)程分配任務(wù),讓學(xué)生體會(huì)到項(xiàng)目開(kāi)發(fā)時(shí)溝通和合作的重要性。另外,通過(guò)讓老師、助教和一小部分學(xué)生扮演用戶(hù)的角色,提高學(xué)生在需求分析中的談判與溝通技巧。
在整個(gè)學(xué)期的開(kāi)發(fā)過(guò)程中,項(xiàng)目組必須定期自行組織召開(kāi)協(xié)商會(huì)議,就項(xiàng)目進(jìn)度、模塊接口等管理與技術(shù)問(wèn)題進(jìn)行非正式的溝通和磋商。學(xué)生們需要提交4份正式的書(shū)面報(bào)告:需求分析報(bào)告、概要設(shè)計(jì)報(bào)告、詳細(xì)設(shè)計(jì)報(bào)告和測(cè)試報(bào)告。
在實(shí)踐課中還安排專(zhuān)門(mén)的時(shí)間用于學(xué)生分組演講,老師和學(xué)生可以進(jìn)行提問(wèn)。一方面可以對(duì)每個(gè)小組的工作進(jìn)行指導(dǎo)和提出意見(jiàn),另一方面也避免了一些學(xué)生的搭車(chē)現(xiàn)象。最終經(jīng)過(guò)一個(gè)學(xué)期的軟件系統(tǒng)設(shè)計(jì)和開(kāi)發(fā)工作,每個(gè)小組要提交2個(gè)版本的軟件產(chǎn)品:初步的和改進(jìn)的版本。
為了切實(shí)體現(xiàn)理論與實(shí)踐并重的教學(xué)理念,本課程加大實(shí)踐環(huán)節(jié)在成績(jī)中的比重,將期末筆試的比例降低到60%,將課程實(shí)踐的考察成績(jī)提高到40%。這在實(shí)踐中取得了很好的效果。
4 團(tuán)隊(duì)精神的培養(yǎng)
真實(shí)的軟件項(xiàng)目通常是由一定規(guī)模的項(xiàng)目小組來(lái)完成的。軟件工程師不僅需要完成個(gè)人的工作任務(wù),還需要與項(xiàng)目組成員協(xié)同工作。因此只有具備良好的團(tuán)隊(duì)精神,才能與其他成員共同開(kāi)發(fā)出高質(zhì)量的軟件產(chǎn)品。
軟件工程并不只有技術(shù)問(wèn)題,還涉及人的問(wèn)題[3]。通過(guò)課程教學(xué)和實(shí)驗(yàn)使學(xué)生深刻認(rèn)識(shí)到軟件開(kāi)發(fā)的成敗在于人,而不是技術(shù),良好的團(tuán)隊(duì)精神對(duì)于項(xiàng)目的成功是至關(guān)重要的。
所謂團(tuán)隊(duì)精神,簡(jiǎn)單來(lái)說(shuō)就是大局意識(shí)、協(xié)作和服務(wù)精神的集中體現(xiàn)。團(tuán)隊(duì)精神要求有統(tǒng)一的奮斗目標(biāo)或價(jià)值觀,而且需要相互信賴(lài),需要適度的引導(dǎo)和協(xié)調(diào),需要正確而統(tǒng)一的文化理念的傳遞和灌輸。團(tuán)隊(duì)精神強(qiáng)調(diào)的是組織內(nèi)部成員間的合作態(tài)度,為了一個(gè)統(tǒng)一的目標(biāo),成員自覺(jué)地認(rèn)同肩負(fù)的責(zé)任并愿意為此目標(biāo)共同奉獻(xiàn)。
團(tuán)隊(duì)精神的培養(yǎng)不能單靠理論灌輸,而是要通過(guò)課程實(shí)踐中的磨合才能真正理解。在課程實(shí)踐中要采取的措施有:建立團(tuán)隊(duì)的行為習(xí)慣及行事規(guī)范;注重從小組的團(tuán)隊(duì)去考核;定期的會(huì)議交流等。
在課程實(shí)踐中,我們創(chuàng)新性地提出“項(xiàng)目經(jīng)費(fèi)”法,即在驗(yàn)收每一階段的項(xiàng)目開(kāi)發(fā)工作時(shí),將每組的平均得分乘以該組人數(shù),作為“項(xiàng)目經(jīng)費(fèi)”統(tǒng)一劃撥給各組長(zhǎng),由組長(zhǎng)根據(jù)組員工作量進(jìn)行具體分配,每個(gè)人得到的經(jīng)費(fèi)多少就代表了他得到的分?jǐn)?shù)。相比于以前由教師統(tǒng)一給分的情況,組長(zhǎng)的分?jǐn)?shù)更為客觀公平地體現(xiàn)了每個(gè)學(xué)生的參與程度。
“項(xiàng)目經(jīng)費(fèi)法”體現(xiàn)了對(duì)團(tuán)體利益的追求,小組團(tuán)隊(duì)得到的“項(xiàng)目經(jīng)費(fèi)”直接決定了可供小組內(nèi)成員分配的利益,讓每個(gè)人都能體會(huì)到團(tuán)隊(duì)的利益即是個(gè)人的利益。同時(shí),“項(xiàng)目經(jīng)費(fèi)”由小組自己決定如何在成員中分配,也體現(xiàn)了對(duì)個(gè)人貢獻(xiàn)的獎(jiǎng)懲,能調(diào)動(dòng)大家的積極性。
5 結(jié)束語(yǔ)
培養(yǎng)一名優(yōu)秀的軟件工程師需要較長(zhǎng)時(shí)間實(shí)際工作的鍛煉,但是在大學(xué)的幾年里,學(xué)生應(yīng)該養(yǎng)成良好的職業(yè)精神、優(yōu)秀的學(xué)習(xí)能力以及基本的專(zhuān)業(yè)技能?!败浖こ袒A(chǔ)”是軟件學(xué)院中一門(mén)非常重要的專(zhuān)業(yè)基礎(chǔ)課程,學(xué)習(xí)的效果直接影響到后續(xù)其它課程的學(xué)習(xí)以及今后的實(shí)際工作,同時(shí)軟件工程學(xué)科的內(nèi)容日新月異,這些都要求我們?cè)谡n程教學(xué)中以社會(huì)和企業(yè)的需求為主導(dǎo),不斷創(chuàng)新和探索。
軟件學(xué)院中“軟件工程基礎(chǔ)”課程教學(xué)的重點(diǎn)在于它需要總攬所有軟件工程知識(shí)領(lǐng)域的要點(diǎn),在課堂教學(xué)的內(nèi)容安排上要體現(xiàn)平臺(tái)性和框架性,課程實(shí)踐應(yīng)利用大型模擬案例的鍛煉,讓學(xué)生真正體會(huì)到軟件工程原理和方法的精髓,從而培養(yǎng)出具有國(guó)際市場(chǎng)競(jìng)爭(zhēng)力、軟件產(chǎn)業(yè)急需的高層次實(shí)用性人才。
參考文獻(xiàn):
[1] http://www.swebok.org/
[2] 張堯?qū)W. 關(guān)于創(chuàng)辦示范性軟件學(xué)院的思考[J]. 中國(guó)高等教育,2004,(10):3-7.
[3] 沈備軍,宋超. 反思和抽象在“軟件工程中人的因素”課程學(xué)習(xí)中的應(yīng)用[J]. 計(jì)算機(jī)教育,2006,(1):52-56.
作者簡(jiǎn)介:
林懷忠,(1970-),2002年畢業(yè)于浙江大學(xué)計(jì)算機(jī)學(xué)院,獲工學(xué)博士學(xué)位,現(xiàn)為浙江大學(xué)計(jì)算機(jī)學(xué)院副教授。主要從事軟件工程、數(shù)據(jù)庫(kù)系統(tǒng)原理等課程的教學(xué)工作,研究領(lǐng)域包括軟件工程、數(shù)據(jù)庫(kù)與數(shù)據(jù)挖掘、信息安全、移動(dòng)計(jì)算等,現(xiàn)已發(fā)表學(xué)術(shù)論文30余篇。