楚廣琳 梁勝彬
摘要:針對(duì)軟件工程的學(xué)科特點(diǎn),結(jié)合河南大學(xué)軟件學(xué)院人才培養(yǎng)模式的實(shí)踐經(jīng)驗(yàn),該文從教學(xué)模式、教學(xué)環(huán)節(jié)設(shè)計(jì)、項(xiàng)目實(shí)施、階段評(píng)審、考核機(jī)制五個(gè)方面對(duì)軟件工程教學(xué)模式進(jìn)行了積極探索和實(shí)踐,采用設(shè)計(jì)型項(xiàng)目驅(qū)動(dòng)的方式,以一個(gè)完整的案例為主線貫穿整個(gè)教學(xué)過程,增強(qiáng)學(xué)生的自主學(xué)習(xí)能力、創(chuàng)新意識(shí)和團(tuán)隊(duì)合作精神,從而達(dá)到提升學(xué)生工程應(yīng)用能力的目的。
關(guān)鍵詞:軟件人才;教學(xué)模式;設(shè)計(jì)型項(xiàng)目驅(qū)動(dòng);階段評(píng)審;考核機(jī)制
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)16-0145-03
The Reform and Practice on Software
CHU Guang-lin1,LIANG Sheng-bin2
(Software College, Henan University, Kaifeng 475004, China)
Abstract:According to the characteristic of software engineering, taking the practice of Henan University, this paper tries to explore a new teaching mode of software engineering curriculum from the perspectives of teaching model, design of teaching link, project implementation, phase review and examine mechanism. It takes design project-driven teaching through the whole teaching process, and enhances students' autonomous learning ability, innovation consciousness and teamwork spirit.
Key words:software talents; teaching model; design project-driven; phase review; examine mechanism
1 引言
軟件工程是綜合運(yùn)用計(jì)算機(jī)理論和技術(shù)以及工程管理的原則和方法,按照用戶需求及設(shè)定的預(yù)算和進(jìn)度,實(shí)現(xiàn)特定功能的軟件產(chǎn)品的定義、設(shè)計(jì)、開發(fā)、測(cè)試、發(fā)布和維護(hù)的工程。由此可見,學(xué)科特點(diǎn)決定了軟件人才的培養(yǎng)需要兼顧系統(tǒng)的理論知識(shí)掌握和綜合的工程實(shí)踐鍛煉[1,2]。
針對(duì)軟件工程的學(xué)科特點(diǎn),結(jié)合河南大學(xué)軟件學(xué)院人才培養(yǎng)模式的實(shí)踐經(jīng)驗(yàn),確定了本課程的總體教學(xué)目標(biāo)。以現(xiàn)代教學(xué)理念為指導(dǎo),采用設(shè)計(jì)型項(xiàng)目驅(qū)動(dòng)式教學(xué)方式,精心進(jìn)行教學(xué)設(shè)計(jì),激發(fā)學(xué)生學(xué)習(xí)的興趣和潛能,使學(xué)生掌握軟件開發(fā)和維護(hù)的方法,了解軟件進(jìn)化過程和先進(jìn)的軟件項(xiàng)目管理方法。通過實(shí)踐性教學(xué)環(huán)節(jié),提高學(xué)生實(shí)際的軟件開發(fā)能力和工程素養(yǎng),培養(yǎng)學(xué)生的團(tuán)隊(duì)協(xié)作意識(shí)和創(chuàng)新精神。
2 教學(xué)模式
在“互聯(lián)網(wǎng)+”的時(shí)代背景下,結(jié)合小范圍課程群建設(shè)的優(yōu)勢(shì),根據(jù)學(xué)生學(xué)情特點(diǎn),充分采用多種教學(xué)手段,以多種形式的案例為主導(dǎo),以理論為補(bǔ)充,以網(wǎng)絡(luò)平臺(tái)為支撐,以項(xiàng)目驅(qū)動(dòng)為導(dǎo)向,結(jié)合實(shí)戰(zhàn)模式,引領(lǐng)整個(gè)開發(fā)過程。教學(xué)模式結(jié)構(gòu)圖如圖1所示。
2.1 課程群教學(xué)環(huán)節(jié)設(shè)置
基于軟件工程課程綜合性的特點(diǎn),在軟件工程課程教學(xué)中需要充分把握學(xué)生已掌握的基礎(chǔ),比如數(shù)據(jù)庫(kù)設(shè)計(jì)、面向?qū)ο蟪绦蛟O(shè)計(jì)語言的編程基礎(chǔ)、軟件測(cè)試的相關(guān)基礎(chǔ),在整個(gè)課程實(shí)施的過程中要綜合考慮JavaEE程序設(shè)計(jì)課程、軟件測(cè)試課程,形成小范圍的課程群,使得三門課程的教學(xué)環(huán)節(jié)設(shè)計(jì)具有一定的承接性,在課程案例的選擇上,使得同一個(gè)案例能在三門課程的講解中有所體現(xiàn),這樣既可以避免課程中出現(xiàn)重復(fù)內(nèi)容的講解,縮短理論講解時(shí)間,又可以使學(xué)生自選的團(tuán)隊(duì)項(xiàng)目得以更好地實(shí)現(xiàn)。從工程項(xiàng)目的階段性上來看,軟件工程課程偏重于項(xiàng)目管理和需求分析過程,JavaEE程序設(shè)計(jì)課程偏重于架構(gòu)、設(shè)計(jì)模式和編碼實(shí)現(xiàn),軟件測(cè)試課程偏重于測(cè)試階段的技術(shù)和具體測(cè)試用例設(shè)計(jì)。
對(duì)于學(xué)生,可以利用軟件工程課程中的知識(shí)更好地進(jìn)行系統(tǒng)需求分析,可以結(jié)合JavaEE課程講述的架構(gòu)和設(shè)計(jì)模式的內(nèi)容進(jìn)行系統(tǒng)設(shè)計(jì),當(dāng)項(xiàng)目進(jìn)行到測(cè)試階段的時(shí)候,軟件測(cè)試課程的相關(guān)知識(shí)基本講解完畢,學(xué)生可以利用所學(xué)知識(shí)針對(duì)自己的項(xiàng)目設(shè)計(jì)測(cè)試用例進(jìn)行測(cè)試,從而更好地達(dá)到學(xué)以致用的目的。
2.2 教學(xué)方法
在“互聯(lián)網(wǎng)+”的時(shí)代背景下,在傳統(tǒng)教學(xué)方法的基礎(chǔ)上,引入了“blackboard”網(wǎng)絡(luò)課堂,在網(wǎng)上提前發(fā)布教學(xué)課件、作業(yè)布置,學(xué)生利用課余時(shí)間完成相應(yīng)的任務(wù)并提交作業(yè)。針對(duì)實(shí)踐項(xiàng)目中的實(shí)際問題,可以在討論區(qū)進(jìn)行相關(guān)討論,全員參與,共同探索與解答。在實(shí)驗(yàn)課中針對(duì)每一組的作業(yè)進(jìn)行討論,最后由教師做總結(jié)性評(píng)講。在討論的過程中取長(zhǎng)補(bǔ)短,從而提升學(xué)生的溝通表達(dá)能力以及分析問題和解決問題的能力。
2.3 學(xué)生學(xué)情分析
根據(jù)軟件學(xué)院課程設(shè)置,軟件工程課程在大三第一學(xué)期開設(shè),在此之前學(xué)生對(duì)于一個(gè)具體項(xiàng)目的開發(fā)和實(shí)現(xiàn)了解甚少,對(duì)于需要選擇的第一個(gè)項(xiàng)目表現(xiàn)十分茫然,對(duì)于項(xiàng)目的規(guī)模大小和實(shí)現(xiàn)難易度沒有概念,甚至有些組在選擇項(xiàng)目上很想當(dāng)然,選擇類似于12306的火車訂票系統(tǒng)、銀行管理系統(tǒng)等復(fù)雜度極大的項(xiàng)目。
基于學(xué)生自選題目的前提,在選題之前,教師需要抽出一節(jié)課的時(shí)間了解學(xué)生目前經(jīng)常使用的軟件,比如手機(jī)APP、微信公眾號(hào)等,針對(duì)學(xué)生經(jīng)常使用的軟件進(jìn)行大致講解,使得學(xué)生對(duì)于項(xiàng)目的規(guī)模有一個(gè)基本的了解。
2.4 項(xiàng)目分組
將設(shè)計(jì)型項(xiàng)目驅(qū)動(dòng)思想引入傳統(tǒng)案例式實(shí)踐教學(xué)活動(dòng),可以有效地提高學(xué)生的自我思考能力,加深對(duì)軟件工程的系統(tǒng)認(rèn)識(shí)[3]。采用實(shí)戰(zhàn)模式,學(xué)生自由組隊(duì),小組自主選題進(jìn)行課程實(shí)踐。參照企業(yè)軟件開發(fā)過程,要求每組成員5人左右,小組成員各有分工側(cè)重,組長(zhǎng)擔(dān)任項(xiàng)目經(jīng)理,其他成員分別擔(dān)任系統(tǒng)分析師、系統(tǒng)架構(gòu)師、UI工程師、程序員和測(cè)試工程師。在組內(nèi)成員共同完成項(xiàng)目的過程中,組員之間有效的協(xié)調(diào)和溝通,培養(yǎng)的了學(xué)生的團(tuán)隊(duì)合作意識(shí),同時(shí)每位學(xué)生更加明確自身在團(tuán)隊(duì)中的作用,充分調(diào)動(dòng)自身主觀能動(dòng)性及時(shí)發(fā)現(xiàn)問題和解決問題。
3 教學(xué)設(shè)計(jì)
軟件工程課程是計(jì)算機(jī)及其相關(guān)專業(yè)的一門核心課程[4],通過本課程的學(xué)習(xí),能夠使學(xué)生了解軟件項(xiàng)目開發(fā)和維護(hù)的一般過程,掌握軟件開發(fā)的傳統(tǒng)方法和最新方法,為今后更深入地學(xué)習(xí)和從事軟件工程實(shí)踐打下良好的基礎(chǔ)。
3.1 做好課程引導(dǎo)
對(duì)于大三的學(xué)生來說,普遍比較關(guān)心實(shí)訓(xùn)以及就業(yè)問題,因此針對(duì)軟件工程、軟件測(cè)試、數(shù)據(jù)庫(kù)開發(fā)相關(guān)崗位對(duì)學(xué)生做了一個(gè)普及,對(duì)崗位要求、崗位技能以及其與軟件工程相關(guān)知識(shí)進(jìn)行擴(kuò)展,使學(xué)生從專業(yè)的角度去理解軟件開發(fā),包括理解軟件開發(fā)中除知識(shí)點(diǎn)之外的技能,比如團(tuán)隊(duì)合作和溝通能力。
3.2 指導(dǎo)學(xué)生主動(dòng)思考和探索開發(fā)方法
在教學(xué)過程中,發(fā)現(xiàn)在理論講解時(shí)雖然結(jié)合有典型案例,但學(xué)生仍理解不夠深入,有些學(xué)生認(rèn)為理論課只是概念,而不理解這些理論是軟件開發(fā)經(jīng)驗(yàn)的總結(jié)。因此在課堂中結(jié)合多個(gè)案例和比較知名的軟件開發(fā)方法,在講解過程中盡可能地進(jìn)行比較,課下也和學(xué)生探討他們開發(fā)軟件時(shí)有可能遇到的問題以及用什么開發(fā)方法什么設(shè)計(jì)模式比較好,通過這些來加深學(xué)生對(duì)這門課程的理解和思考。
3.3 拓寬學(xué)生知識(shí)來源
軟件工程屬于計(jì)算機(jī)類的核心課程之一,國(guó)內(nèi)外專家都有大量的著作,而學(xué)生課后卻很少閱讀相關(guān)書籍。這門課程僅依靠一本書難以吸收眾家觀點(diǎn),所以在課程中介紹了一些知名的軟件開發(fā)類網(wǎng)站和知名的軟件工程、軟件設(shè)計(jì)模式的專家博客來讓學(xué)生閱讀,以擴(kuò)充其知識(shí)面。
3.4 強(qiáng)化知識(shí)的靈活運(yùn)用
在教學(xué)過程中,及時(shí)總結(jié)小知識(shí)點(diǎn),多和學(xué)生溝通,對(duì)學(xué)生掌握的知識(shí)進(jìn)行了解,激發(fā)學(xué)生對(duì)課程內(nèi)容的深入學(xué)習(xí)理解。對(duì)于理論和實(shí)際開發(fā)結(jié)合較為緊密的階段,尤其是在開發(fā)模式的講解中,通過比較幾種代碼方法的差異而造成軟件質(zhì)量的差異,讓學(xué)生明確軟件工程的整體目標(biāo),能夠讓軟件工程和軟件開發(fā)相互支撐,從而提高軟件設(shè)計(jì)的水平,提升開發(fā)軟件的質(zhì)量。
4 項(xiàng)目實(shí)施
采用設(shè)計(jì)型項(xiàng)目驅(qū)動(dòng)式教學(xué)方式,由學(xué)生自愿組隊(duì),自主選題進(jìn)行課程實(shí)踐。在項(xiàng)目實(shí)施的過程中,針對(duì)項(xiàng)目開發(fā)的各個(gè)階段,堅(jiān)持進(jìn)行階段評(píng)審,階段評(píng)審對(duì)于項(xiàng)目驅(qū)動(dòng)式教學(xué)方法來說是極其重要的。
項(xiàng)目實(shí)施的具體時(shí)間安排如下:
(1) 命題 (第1-2周)
以開發(fā)小組為單位,組長(zhǎng)召集所有組員開會(huì)選擇課題,每組選擇課題經(jīng)教師審查調(diào)整后確定。設(shè)計(jì)的課題盡量結(jié)合學(xué)生熟悉的各種應(yīng)用軟件,以獲得更好的工程設(shè)計(jì)實(shí)踐的訓(xùn)練效果。 課題規(guī)模、大小適當(dāng),具有一定復(fù)雜度,鼓勵(lì)學(xué)生選擇具有創(chuàng)新性和商業(yè)應(yīng)用性項(xiàng)目。通過激發(fā)學(xué)生參加開發(fā)實(shí)踐的積極性與創(chuàng)造性,經(jīng)過努力能夠完成,才能達(dá)到綜合應(yīng)用所學(xué)知識(shí)的目的。
(2) 需求分析(第3-7周)
在需求分析的過程中,要求學(xué)生分批進(jìn)行角色轉(zhuǎn)換,從用戶到需求分析人員,從需求分析人員到用戶。針對(duì)學(xué)生選題以工程項(xiàng)目為多的特點(diǎn),鼓勵(lì)學(xué)生使用Axure制作原型,從而更好地確定需求。本階段末進(jìn)行需求方案評(píng)審。
(3) 軟件設(shè)計(jì)(第8-11周)
確定系統(tǒng)總體設(shè)計(jì)方案和系統(tǒng)的體系結(jié)構(gòu),進(jìn)行系統(tǒng)的模塊化設(shè)計(jì);建立系統(tǒng)的靜態(tài)模型及動(dòng)態(tài)模型,進(jìn)行用戶界面設(shè)計(jì)。在設(shè)計(jì)的過程中,要求學(xué)生結(jié)合JavaEE程序設(shè)計(jì)課程的內(nèi)容,確定適合本組項(xiàng)目的設(shè)計(jì)模式,分層建立類模型。本階段末進(jìn)行總體設(shè)計(jì)方案評(píng)審,重點(diǎn)是系統(tǒng)類模型。
(4) 編碼及軟件測(cè)試(第12-15周)
編碼實(shí)現(xiàn)。在代碼中要給出詳細(xì)的注釋,包括模塊名、功能、作者、中間過程的功能以及變量說明。 結(jié)合軟件測(cè)試課程內(nèi)容,采用綜合測(cè)試策略,進(jìn)行靜態(tài)分析和動(dòng)態(tài)測(cè)試,制訂測(cè)試計(jì)劃,設(shè)計(jì)測(cè)試用例,編寫測(cè)試報(bào)告。組內(nèi)分工完成模塊測(cè)試、組裝測(cè)試和功能測(cè)試。
(5) 驗(yàn)收測(cè)試(第16周)
最后由教師完成系統(tǒng)驗(yàn)收測(cè)試,并且以開發(fā)小組為單位提交所有文檔和代碼。
在項(xiàng)目實(shí)施的過程中,堅(jiān)持分階段進(jìn)行評(píng)審,在每個(gè)階段結(jié)束后抽出一周的時(shí)間對(duì)每個(gè)小組的項(xiàng)目進(jìn)行評(píng)審。采用答辯式的評(píng)審方式,每組選派出該階段的主要負(fù)責(zé)人作為主講人,主講人遺漏之處可以由組內(nèi)成員進(jìn)行補(bǔ)充。在答辯的過程中既鍛煉學(xué)生語言表達(dá)能力,又是一次自我展示的機(jī)會(huì);同時(shí),組內(nèi)成員共同完成項(xiàng)目的過程中,也鍛煉了組員間的協(xié)調(diào)和溝通能力,培養(yǎng)了團(tuán)隊(duì)的合作意識(shí)。
答辯結(jié)束之后,全班進(jìn)行交流和討論,所有的學(xué)生都參與到項(xiàng)目的討論中,使學(xué)生的角色由被動(dòng)接受到主動(dòng)思考交流,從而增強(qiáng)其自主學(xué)習(xí)意識(shí)和團(tuán)隊(duì)意識(shí)。在討論和提問的過程中,充分鍛煉了學(xué)生如何用簡(jiǎn)潔的語言更加清楚流暢的表達(dá)自己的觀點(diǎn),邏輯是否嚴(yán)密以及溝通的有效性。在全班討論中對(duì)于積極提問的學(xué)生給予加分獎(jiǎng)勵(lì),使得學(xué)生能積極主動(dòng)的參與的學(xué)習(xí)的過程中。
5 過程性評(píng)價(jià)的考核機(jī)制
軟件工程課程是一門實(shí)踐性較強(qiáng)的課程,學(xué)生不僅要具有現(xiàn)代軟件工程開發(fā)能力,也要具備主動(dòng)學(xué)習(xí)、協(xié)作學(xué)習(xí)、系統(tǒng)思維、過程控制、表達(dá)展示等綜合素質(zhì)[5]。因此本課程采用過程性評(píng)價(jià)的考核機(jī)制,不以考試成績(jī)作為唯一的考核目標(biāo)。項(xiàng)目實(shí)踐考核占50%,期末試卷考核占50%。
期末考核50%,采用紙質(zhì)試卷閉卷考試,考核學(xué)生對(duì)于軟件工程理論知識(shí)的掌握和運(yùn)用能力。
項(xiàng)目實(shí)踐考核50%,重點(diǎn)在與學(xué)生對(duì)專業(yè)知識(shí)的應(yīng)用能力、創(chuàng)新能力、實(shí)戰(zhàn)開發(fā)的過程、系統(tǒng)開發(fā)的效果以及質(zhì)量測(cè)試等全方面地考察。項(xiàng)目成績(jī)有三部分構(gòu)成:
(1) 組長(zhǎng)為小組內(nèi)所有成員(包括自己)評(píng)分占10分,主要從文檔參與度、組內(nèi)會(huì)議表現(xiàn)、原型設(shè)計(jì)、代碼編寫、測(cè)試實(shí)施情況五個(gè)方面進(jìn)行評(píng)分。
(2) 評(píng)審時(shí)其他小組平均評(píng)分占10分,取所有階段評(píng)審評(píng)分的平均值。
(3) 教師評(píng)分占30分。其中,項(xiàng)目答辯10分,系統(tǒng)相關(guān)文檔10分,系統(tǒng)演示與團(tuán)隊(duì)合作5分,課堂表現(xiàn)5分。
6 結(jié)束語
實(shí)踐證明,軟件工程課程中采用設(shè)計(jì)型項(xiàng)目驅(qū)動(dòng)式教學(xué)模式,在課程講授、創(chuàng)新學(xué)習(xí)以及學(xué)生就業(yè)等方面均取得了預(yù)期效果。首先,通過理論聯(lián)系實(shí)踐,活躍了課堂氛圍,加深了學(xué)生對(duì)理論知識(shí)理解的廣度和深度,大幅提高了教學(xué)質(zhì)量水平。其次,通過項(xiàng)目分組自由組隊(duì)方式,培養(yǎng)了學(xué)生的團(tuán)隊(duì)合作精神,增強(qiáng)了學(xué)生的創(chuàng)新意識(shí)和能力,提高了學(xué)生學(xué)習(xí)的主動(dòng)性和積極性。最后,通過項(xiàng)目驅(qū)動(dòng)的實(shí)踐方式,提升了學(xué)生綜合素質(zhì)和實(shí)際工作能力,有利于學(xué)生主動(dòng)適應(yīng)軟件產(chǎn)業(yè)人才需求,增強(qiáng)了就業(yè)競(jìng)爭(zhēng)能力,解決了企業(yè)的用人矛盾,可謂是“一舉多贏”。
參考文獻(xiàn):
[1] 盧葦,蔡圓媛,邢薇薇. 國(guó)際化軟件人才培養(yǎng)模式改革與創(chuàng)新[J]. 高等工程教育研究,2013(1):76-82.
[2] 林健. “卓越工程師教育培養(yǎng)計(jì)劃”專業(yè)培養(yǎng)方法研究[J]. 清華大學(xué)教育研究,2011,32(2):47-55.
[3] 孫明,田蜜,康文杰.設(shè)計(jì)性項(xiàng)目驅(qū)動(dòng)的軟件工程實(shí)踐教學(xué)改革[J].計(jì)算機(jī)教育,2016(3):156-159.
[4] 劉強(qiáng),陳悅,駱斌,等. “軟件工程”課程教學(xué)實(shí)踐方案[J]. 中國(guó)大學(xué)教育,20011(2):41-44.
[5] 吳春雷,剛旭,崔榮學(xué).軟件工程綜合試驗(yàn)課程的改革與建設(shè)[J].實(shí)驗(yàn)室研究與探索,2017(1):180-184.