岑宇森 熊芳敏
摘要:本文系統(tǒng)地總結(jié)了軟件工程教學(xué)的特征,詳細(xì)分析了軟件工程教學(xué)的現(xiàn)狀及存在的問(wèn)題,提出了課程項(xiàng)目教學(xué)法改革的思路和方法,并對(duì)進(jìn)一步搞好軟件工程教學(xué)提出了一些意見(jiàn)。
關(guān)鍵詞:軟件工程;項(xiàng)目教學(xué)法;改革與實(shí)踐
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
軟件工程是計(jì)算機(jī)科學(xué)與技術(shù)及相關(guān)專(zhuān)業(yè)教學(xué)計(jì)劃中一門(mén)重要的專(zhuān)業(yè)必修課,是指導(dǎo)計(jì)算機(jī)軟件開(kāi)發(fā)與維護(hù)的一門(mén)綜合性課程,是一門(mén)實(shí)踐性很強(qiáng)的課程,各高校的計(jì)算機(jī)專(zhuān)業(yè)均開(kāi)設(shè)這門(mén)課程。通過(guò)本課程的學(xué)習(xí),使學(xué)生了解和掌握軟件工程開(kāi)發(fā)的技術(shù)和方法,具備作為軟件工程師所需的專(zhuān)業(yè)能力,為從事計(jì)算機(jī)軟件開(kāi)發(fā)和維護(hù)提供方法上的指導(dǎo)。同時(shí),軟件工程的研究除計(jì)算機(jī)軟件本身外,還涉及眾多其他的領(lǐng)域,如管理科學(xué)、心理學(xué)、經(jīng)濟(jì)學(xué)、人機(jī)工程學(xué)等,因此,它也是一門(mén)綜合性學(xué)科。進(jìn)入新世紀(jì),軟件工程已經(jīng)由最初的一個(gè)學(xué)科方向發(fā)展成為以計(jì)算機(jī)科學(xué)技術(shù)為基礎(chǔ)的多學(xué)科交叉學(xué)科,在當(dāng)今的信息社會(huì)中占有重要地位。如何組織好軟件工程實(shí)驗(yàn)性教學(xué),對(duì)于培養(yǎng)創(chuàng)新型合格的軟件人才具有十分重要的意義。
1軟件工程教學(xué)存在的問(wèn)題
長(zhǎng)期以來(lái),我們培養(yǎng)的計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生存在著“什么都學(xué)過(guò),卻什么都不會(huì)”的尷尬局面,專(zhuān)業(yè)教育、教材與應(yīng)用需求嚴(yán)重脫節(jié)。事實(shí)上,學(xué)生就業(yè)難并不是就業(yè)市場(chǎng)不需要計(jì)算機(jī)人才,其根源還是計(jì)算機(jī)教學(xué)的現(xiàn)狀所致。傳統(tǒng)的“軟件工程”課程雖然有實(shí)驗(yàn)教學(xué)的要求,但一般只是停留在組織學(xué)生編寫(xiě)軟件項(xiàng)目若干設(shè)計(jì)文檔這個(gè)單一環(huán)節(jié)上。然而,由于教育過(guò)早和長(zhǎng)期的文理分家,導(dǎo)致理工科學(xué)生的文檔編寫(xiě)是個(gè)“軟肋”,他們也不感興趣。此外,由于教學(xué)時(shí)間有限,要真正完成軟件工程各階段文檔的編寫(xiě),事實(shí)上也沒(méi)有可能。今天,軟件工程教學(xué)還面臨著計(jì)算機(jī)學(xué)科發(fā)展規(guī)范所提出的更高的質(zhì)量要求,同時(shí)也面臨著大眾化高等教育背景下所帶來(lái)的客觀(guān)問(wèn)題。
因此,迫切需要對(duì)軟件工程課程的教學(xué)體系進(jìn)行工程化改造,逐步建立工程化實(shí)踐教學(xué)體系,著力培養(yǎng)學(xué)生的工程化開(kāi)發(fā)能力和職業(yè)素質(zhì),進(jìn)而形成一個(gè)融基礎(chǔ)理論、實(shí)驗(yàn)教學(xué)、工程實(shí)踐為一體的整體化培養(yǎng)機(jī)制,讓學(xué)生的基礎(chǔ)知識(shí)、科學(xué)素養(yǎng)、專(zhuān)業(yè)知識(shí)、創(chuàng)新能力、工程能力和職業(yè)素質(zhì)都得到全面均衡的發(fā)展。
2軟件工程項(xiàng)目教學(xué)法的改革與實(shí)踐
軟件工程強(qiáng)調(diào)采用工程化的方式開(kāi)發(fā)和設(shè)計(jì)軟件,要求培養(yǎng)學(xué)生能勝任研究、分析、開(kāi)發(fā)、設(shè)計(jì)、生產(chǎn)、測(cè)試、管理、咨詢(xún)、培訓(xùn)等多種角色,使學(xué)生熟練掌握軟件工程知識(shí)與技能,具備作為軟件工程師從事工程專(zhuān)業(yè)所需的專(zhuān)業(yè)能力。隨著高校擴(kuò)招,教學(xué)規(guī)模迅速發(fā)展,傳統(tǒng)的計(jì)算機(jī)教學(xué)模式在實(shí)踐環(huán)節(jié)上的缺乏與不足,直接影響了計(jì)算機(jī)課程的教育教學(xué)質(zhì)量,特別是對(duì)于像軟件工程這種綜合性、實(shí)踐性很強(qiáng)的課程,如果沒(méi)有一整套科學(xué)、合理的實(shí)驗(yàn)教學(xué)方法,就不可能培養(yǎng)出具有創(chuàng)新能力的合格人才。因此,切實(shí)加強(qiáng)軟件工程課程的創(chuàng)新與改革至關(guān)重要。
按該課程的特點(diǎn),實(shí)驗(yàn)內(nèi)容包括軟件開(kāi)發(fā)的兩大方法學(xué)的專(zhuān)題訓(xùn)練,即結(jié)構(gòu)化(生命周期學(xué))的方法學(xué)和面向?qū)ο蟮姆椒▽W(xué),以平時(shí)實(shí)驗(yàn)和課程設(shè)計(jì)相結(jié)合,設(shè)置一些實(shí)驗(yàn)項(xiàng)目,要求學(xué)生利用結(jié)構(gòu)化軟件開(kāi)發(fā)技術(shù)或面向?qū)ο蟮能浖_(kāi)發(fā)技術(shù)完成對(duì)該項(xiàng)目的開(kāi)發(fā)。以項(xiàng)目作為實(shí)驗(yàn)環(huán)節(jié)的主線(xiàn),隨著課程進(jìn)展布置任務(wù),從項(xiàng)目開(kāi)發(fā)的準(zhǔn)備工作、系統(tǒng)分析過(guò)程、系統(tǒng)設(shè)計(jì)過(guò)程、軟件測(cè)試到系統(tǒng)實(shí)施,結(jié)合所學(xué)習(xí)的理論知識(shí),完成項(xiàng)目的開(kāi)發(fā)。同時(shí),依據(jù)國(guó)家《計(jì)算機(jī)軟件開(kāi)發(fā)規(guī)范》,撰寫(xiě)規(guī)范的技術(shù)文檔。因此,主要從以下幾個(gè)方面對(duì)軟件工程教學(xué)作了改革與創(chuàng)新的嘗試:
(1) 樹(shù)立工程化能力培養(yǎng)與基礎(chǔ)理論教學(xué)、專(zhuān)業(yè)能力培養(yǎng)并重的教學(xué)理念。
把工程化教學(xué)作為人才培養(yǎng)的核心任務(wù)之一,通過(guò)全面改革軟件工程專(zhuān)業(yè)的人才培養(yǎng)模式、調(diào)整課程體系、充實(shí)教學(xué)內(nèi)容、改進(jìn)教學(xué)方法,建立工程化實(shí)踐教學(xué)體系,在教學(xué)過(guò)程中全面體現(xiàn)工程化能力和職業(yè)素質(zhì)培養(yǎng)的思路,進(jìn)而形成了一個(gè)融基礎(chǔ)理論、實(shí)驗(yàn)教學(xué)、工程實(shí)踐為一體的整體化培養(yǎng)機(jī)制,讓學(xué)生各方面的能力都得到全面均衡的發(fā)展,以適應(yīng)現(xiàn)代軟件產(chǎn)業(yè)的需求。
(2) 設(shè)置工程化教學(xué)階段和企業(yè)實(shí)習(xí)階段。
把工程化素質(zhì)培養(yǎng)作為學(xué)生全培養(yǎng)期中自始至終關(guān)注的主線(xiàn)。在工程化教學(xué)階段,一方面獨(dú)立設(shè)置了多門(mén)以培養(yǎng)學(xué)生工程能力和職業(yè)素質(zhì)為主的學(xué)分課程;另一方面對(duì)操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)、多媒體技術(shù)等十多門(mén)傳統(tǒng)課程教學(xué)內(nèi)容進(jìn)行工程化改造,充實(shí)工程教學(xué)內(nèi)容,引入實(shí)習(xí)大作業(yè)。在企業(yè)實(shí)習(xí)階段,建立跨度為半年的全時(shí)制企業(yè)實(shí)習(xí)制度,在著名軟件企業(yè)中設(shè)立實(shí)習(xí)基地,通過(guò)真實(shí)的企業(yè)氛圍和開(kāi)發(fā)環(huán)境,進(jìn)一步培養(yǎng)學(xué)生的工程能力和職業(yè)素質(zhì)。
(3) 實(shí)驗(yàn)課程以平時(shí)實(shí)驗(yàn)和課程設(shè)計(jì)相結(jié)合,設(shè)置一些綜合實(shí)驗(yàn)項(xiàng)目。
隨著課程進(jìn)展布置任務(wù),通過(guò)調(diào)查研究、可行性研究、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試、維護(hù)(版本升級(jí))及技術(shù)文檔的編寫(xiě),結(jié)合所學(xué)習(xí)的理論知識(shí),完成設(shè)計(jì)。實(shí)驗(yàn)內(nèi)容應(yīng)覆蓋軟件工程學(xué)科的各個(gè)主要環(huán)節(jié),覆蓋軟件生存周期的各個(gè)階段,使學(xué)生通過(guò)實(shí)驗(yàn)加深對(duì)學(xué)科理論知識(shí)的理解。但也要避免“喧賓奪主”,在積極發(fā)展實(shí)驗(yàn)教育的同時(shí),要保證必要的理論教學(xué)水平。必須充分重視和精心設(shè)計(jì)實(shí)驗(yàn)內(nèi)容,要有可操作性、趣味性和適當(dāng)?shù)碾y度??刹僮餍员WC學(xué)生都能完成實(shí)驗(yàn),從而促進(jìn)學(xué)生學(xué)習(xí)信心的建立,在一定程度上能減少學(xué)生抄襲的理由,克服實(shí)驗(yàn)數(shù)據(jù)普遍抄襲的弊病;趣味性體現(xiàn)“寓教于樂(lè)”,以提高學(xué)生完成實(shí)驗(yàn)的積極性;而適當(dāng)?shù)碾y度有助于激發(fā)優(yōu)秀學(xué)生進(jìn)一步鉆研的斗志。
項(xiàng)目來(lái)源為教師科研課題、實(shí)踐基地課題、校內(nèi)應(yīng)用課題和自選課題。選題的原則為:新穎、實(shí)用和規(guī)模適中。新穎代表計(jì)算機(jī)發(fā)展的主流技術(shù)和應(yīng)用范疇。實(shí)用代表所選題目一定是具體單位或用戶(hù)要求開(kāi)發(fā)的,而不是由學(xué)生隨意杜撰和隨意想象的,其目的就是保證學(xué)生在軟件工程實(shí)踐過(guò)程有實(shí)際的場(chǎng)景環(huán)境(主要包括用戶(hù)、領(lǐng)域?qū)<液凸ぷ鳝h(huán)境),這對(duì)于高質(zhì)量的軟件工程實(shí)踐過(guò)程具有質(zhì)的保障。
(4) 軟件工程實(shí)驗(yàn)要求學(xué)生采用“項(xiàng)目小組”的形式,結(jié)合具體的開(kāi)發(fā)項(xiàng)目進(jìn)行設(shè)計(jì),班級(jí)按項(xiàng)目小組進(jìn)行分組,每組不得超過(guò)4人。每個(gè)項(xiàng)目小組選出項(xiàng)目負(fù)責(zé)人或項(xiàng)目經(jīng)理,由其召集項(xiàng)目組成員討論、選定開(kāi)發(fā)項(xiàng)目。
(5) 學(xué)生分工合作,學(xué)習(xí)軟件開(kāi)發(fā)小組的組織和管理,將項(xiàng)目開(kāi)發(fā)各階段的任務(wù)明確,熟悉軟件開(kāi)發(fā)環(huán)境,培養(yǎng)團(tuán)隊(duì)精神,共同完成該項(xiàng)目的設(shè)計(jì)任務(wù)。項(xiàng)目中的每項(xiàng)任務(wù)要落實(shí)到個(gè)人,實(shí)驗(yàn)在規(guī)定的時(shí)間內(nèi),由學(xué)生獨(dú)立完成。學(xué)生在學(xué)校機(jī)房的機(jī)器應(yīng)固定下來(lái),并安裝好相應(yīng)的軟件,沒(méi)有特殊情況不應(yīng)缺席。
(6) 配置開(kāi)放的實(shí)驗(yàn)環(huán)境:實(shí)驗(yàn)環(huán)境是保證實(shí)驗(yàn)教學(xué)活動(dòng)和質(zhì)量的基本條件,對(duì)于軟件工程課程顯得尤為重要。
項(xiàng)目開(kāi)發(fā)不是簡(jiǎn)單程序設(shè)計(jì),而是軟件工程全過(guò)程的綜合性實(shí)踐,應(yīng)該建立和配置相應(yīng)的軟件工程實(shí)驗(yàn)環(huán)境或?qū)嶒?yàn)中心。實(shí)驗(yàn)環(huán)境或?qū)嶒?yàn)中心的建設(shè)重點(diǎn)要放在軟件工程環(huán)境和自動(dòng)化開(kāi)發(fā)工具的配置上。應(yīng)該清楚,高層次的實(shí)驗(yàn)環(huán)境應(yīng)是高素質(zhì)人才培養(yǎng)的物質(zhì)基礎(chǔ)。實(shí)驗(yàn)環(huán)境還應(yīng)該是開(kāi)放性的,這有利于在學(xué)生實(shí)踐過(guò)程中建立一種項(xiàng)目開(kāi)發(fā)、科學(xué)研究和創(chuàng)新思維的綜合效應(yīng)。
(7) 分組討論,集體交流
分組討論是項(xiàng)目教學(xué)中非常重要的環(huán)節(jié),本質(zhì)上是一種概念或想法的交流。圍繞項(xiàng)目的重點(diǎn),難點(diǎn),疑點(diǎn),進(jìn)行討論、辯論和爭(zhēng)論。每個(gè)學(xué)生可以自由的抒發(fā)己見(jiàn)、相互啟迪、互相借鑒,重點(diǎn)是想法的交流。要求每個(gè)學(xué)生簡(jiǎn)要介紹自己對(duì)軟件開(kāi)發(fā)所做的分析設(shè)計(jì),并提出自己對(duì)該軟件開(kāi)發(fā)流程的看法,供大家討論與切磋,可以按照項(xiàng)目中所提出的問(wèn)題一個(gè)一個(gè)討論。在教師的引導(dǎo)下,讓學(xué)生進(jìn)行課堂發(fā)言,進(jìn)行全體學(xué)生的交流。本階段討論主要解決兩個(gè)問(wèn)題:①小組討論沒(méi)有達(dá)成共識(shí)的問(wèn)題;②按照教學(xué)目標(biāo),有意引導(dǎo)學(xué)生掌握軟件工程的生命周期法各階段所做的具體工作以及進(jìn)行相關(guān)工作的必要性。
為了使分組討論有效地開(kāi)展,教師要做好充分的課前準(zhǔn)備。除了熟知項(xiàng)目陳述的事實(shí)、觀(guān)點(diǎn)外,還要諳知項(xiàng)目反映或蘊(yùn)涵的原理、規(guī)則等知識(shí),以便引導(dǎo)學(xué)生概括出來(lái)。要認(rèn)真學(xué)習(xí)研究項(xiàng)目后給出的教學(xué)指南,具體擬定出課堂教學(xué)計(jì)劃,這要求教師認(rèn)真思考回答以下問(wèn)題:希望課堂上發(fā)生些什么?如何引導(dǎo)這些情況的發(fā)生?討論如何開(kāi)展?時(shí)間如何安排?自己扮演什么角色?是先得結(jié)論再分析,還是相反?并對(duì)課堂討論中可能出現(xiàn)的情況做出預(yù)測(cè)。教師還要依據(jù)課程目標(biāo)、項(xiàng)目目標(biāo)及教學(xué)計(jì)劃的具體安排重點(diǎn)分析以下方面的內(nèi)容:項(xiàng)目中反映的那些重要論題、項(xiàng)目中反映的情況發(fā)生的根源、項(xiàng)目中所反映的而學(xué)生可能設(shè)想不到的情況等。在討論掌握上,教師要力保討論沿預(yù)期的軌道進(jìn)行,把討論引導(dǎo)到問(wèn)題的解決上去,并引導(dǎo)出與論題相關(guān)的理論知識(shí),力爭(zhēng)班上每個(gè)學(xué)生都至少有一次發(fā)言的機(jī)會(huì),切實(shí)做到有效參與。
(8) 總結(jié)歸納,消化提升
總結(jié)歸納是軟件工程項(xiàng)目教學(xué)的最后階段,要求學(xué)生針對(duì)每個(gè)項(xiàng)目寫(xiě)出學(xué)習(xí)報(bào)告。該報(bào)告中包含學(xué)生在閱讀項(xiàng)目中所得到的具體收獲;通過(guò)分析與設(shè)計(jì)軟件,提出自己所解決的實(shí)際問(wèn)題;對(duì)理論上軟件工程概念和項(xiàng)目中的實(shí)際是否一一相對(duì)應(yīng);以及對(duì)軟件工程仍然存在的困惑。通過(guò)反思進(jìn)一步加深對(duì)項(xiàng)目的認(rèn)識(shí),真正作到理論和實(shí)踐的相結(jié)合。
項(xiàng)目教學(xué)中,師生都要注意角色轉(zhuǎn)換,如果學(xué)生仍然熱衷于將自己置身于教學(xué)過(guò)程之外,只做一名旁觀(guān)者,項(xiàng)目教學(xué)也就失去了它的價(jià)值。學(xué)生只有真正地深入項(xiàng)目、體驗(yàn)角色,才會(huì)有項(xiàng)目情境的“再現(xiàn)”,項(xiàng)目教學(xué)的價(jià)值才能被體現(xiàn)。而教師在教學(xué)過(guò)程中也要不斷變換自己的角色,可充當(dāng)監(jiān)督員,激勵(lì)啟發(fā)學(xué)生,監(jiān)督項(xiàng)目分析、討論情況;可充當(dāng)示范員,向?qū)W生演示、講解、分析項(xiàng)目中的事實(shí)、圖表、材料等;可充當(dāng)主人翁,制定下一步的工作計(jì)劃并在實(shí)施中起主導(dǎo)作用;可做仲裁,解決各種爭(zhēng)端;可充當(dāng)交警,使討論回到預(yù)定的軌道上來(lái),等等。
3項(xiàng)目教學(xué)法的效果
軟件工程項(xiàng)目教學(xué)法已在我院計(jì)算機(jī)專(zhuān)業(yè)學(xué)生中進(jìn)行了全面實(shí)施,效果顯著,提高了學(xué)生按照軟件工程的原理、方法、技術(shù)、標(biāo)準(zhǔn)和規(guī)范進(jìn)行軟件開(kāi)發(fā)的綜合能力和軟件項(xiàng)目的管理能力,學(xué)生的綜合素質(zhì)明顯增強(qiáng)。特別在基礎(chǔ)技能、團(tuán)隊(duì)協(xié)作、資料收集、人際交流、項(xiàng)目規(guī)劃幾個(gè)方面明顯具備較強(qiáng)的能力。
客觀(guān)地說(shuō),作為第一次開(kāi)發(fā)實(shí)際軟件系統(tǒng)的學(xué)生,要在較短的時(shí)間里開(kāi)發(fā)出各方面都達(dá)到真正實(shí)用要求的系統(tǒng)是難以完成的。實(shí)踐的意義更主要是讓學(xué)生經(jīng)歷完整的過(guò)程,體驗(yàn)各階段方法和工具的應(yīng)用,還有鍛煉除技術(shù)以外的多方面能力(如需求分析時(shí)如何與用戶(hù)交流、文檔寫(xiě)作、成員間的協(xié)作與管理,等等),以提高其綜合素質(zhì)。
4結(jié)束語(yǔ)
今天,軟件工程已經(jīng)由最初的一個(gè)學(xué)科方向發(fā)展成為以計(jì)算機(jī)科學(xué)技術(shù)為基礎(chǔ)的一個(gè)新興交叉學(xué)科,軟件工程的教學(xué)面臨著計(jì)算機(jī)學(xué)科發(fā)展規(guī)范所提出的更高質(zhì)量要求。計(jì)算機(jī)技術(shù)的迅速發(fā)展和高端軟件人才的嚴(yán)重匱乏,讓我們面臨新的挑戰(zhàn)。軟件工程項(xiàng)目教學(xué)法改革還需要在以下幾方面繼續(xù)努力:
(1) 軟件工程教學(xué)改革體系應(yīng)在培養(yǎng)學(xué)生工具的使用與實(shí)驗(yàn)技能、工程設(shè)計(jì)與實(shí)現(xiàn)能力、評(píng)審與測(cè)試能力、團(tuán)隊(duì)協(xié)作與溝通能力、過(guò)程管理與控制能力等方面下更多的工夫,作更多的努力。
(2) 隨著軟件產(chǎn)業(yè)的發(fā)展和計(jì)算機(jī)應(yīng)用的普及,系統(tǒng)測(cè)試、維護(hù)的重要性會(huì)更加突出,軟件工程實(shí)踐教學(xué)應(yīng)在這方面有所準(zhǔn)備,有所側(cè)重。
(3) 軟件工程教育應(yīng)當(dāng)給予學(xué)生“工程”的概念,以軟件生命周期為主線(xiàn),構(gòu)建知識(shí)結(jié)構(gòu),將科學(xué)與工程有效結(jié)合,實(shí)施技術(shù)與管理的能力和素質(zhì)培養(yǎng)。
參考文獻(xiàn):
[1] 張海藩. 軟件工程導(dǎo)論[M]. 北京:清華大學(xué)出版社,2003.
[2] 鄭紅. 基于建構(gòu)主義的軟件工程教學(xué)方法探索[J]. 計(jì)算機(jī)教育,2008(10):10-14.
[3] 林松. 高校《軟件工程》課程教學(xué)與實(shí)踐探討[J]. 福建電腦,2008(1):33-36.
[4] 林惠強(qiáng),劉財(cái)興,林丕源.“軟件工程”課程啟發(fā)式教學(xué)的研究與實(shí)踐[J]. 實(shí)驗(yàn)室研究與探索,2008(5):8-11.
[5] 丁瓊. 軟件工程課程教學(xué)改革與思考[J]. 華東交通大學(xué)學(xué)報(bào),2007(z1):76-80.
[6] 馬燕,張根耀,王文發(fā). 軟件工程實(shí)驗(yàn)教學(xué)模式改革與實(shí)踐研究[J]. 教育與職業(yè),2006(36):25-28.
[7] 尹鋒. 學(xué)習(xí)遷移理論在軟件工程教學(xué)中的應(yīng)用[J]. 中國(guó)大學(xué)教學(xué),2005(2):30-35.