于學(xué)軍 張 麗 俞 敏 朱 青
(北京工業(yè)大學(xué)信息學(xué)部 北京 100124)
《軟件工程導(dǎo)論》課程是軟件工程專業(yè)的一門專業(yè)基礎(chǔ)必修類課程[1]。其課程地位是軟件工程專業(yè)學(xué)生專業(yè)能力培養(yǎng)的敲門磚,同時為后續(xù)的軟件工程專業(yè)課程奠定基礎(chǔ)。北京工業(yè)大學(xué)軟件工程專業(yè)培養(yǎng)方案中,軟件工程導(dǎo)論課程的設(shè)置基本目標為使學(xué)生理解什么是工程,什么是軟件工程等基本概念,基本理論,掌握運用軟件工程方法進行軟件構(gòu)造,管理的原則問題,為后續(xù)軟件工程系列課程打下良好的基礎(chǔ)。該課程設(shè)置在第3學(xué)期,以全生命周期開發(fā)過程的“方法、人、工具及過程”為主線,不僅強調(diào)軟件工程知識的傳授,同時強調(diào)培養(yǎng)學(xué)生工程能力,要求它同時也是一門實踐性課程[2-4]。達到課程目標存在如下困難:
痛點1:有限學(xué)時限制:很難在有限的32學(xué)時內(nèi),對學(xué)生的能力進行綜合培養(yǎng)。
痛點2:學(xué)生接受限制:傳統(tǒng)的教學(xué)方式使學(xué)生已經(jīng)習(xí)慣了以教師“教”為主的授課模式,這種模式對能力培養(yǎng)存在難度。
痛點3:能力基礎(chǔ)限制:開課學(xué)期是第3學(xué)期,其先修課程只有C語言和面向?qū)ο蟮某绦蛟O(shè)計,學(xué)生的基礎(chǔ)稍弱,對本次課程能力的培養(yǎng)也很困難。
本文圍繞工程能力培養(yǎng)目標達成,提出“以學(xué)生為中心,以大賽為驅(qū)動,以集中課程設(shè)計為輔助”的實踐探索模式[5]。
結(jié)合軟件工程導(dǎo)論課程的課程目標,作者將其達成指標分為兩類:顯式指標及隱式指標,兩類指標分別對工程基礎(chǔ)指標元素進行不同程度的支撐,如圖1所示。
圖1:軟件工程導(dǎo)論課程指標體系
如圖1所示,軟件工程指標體系中包括知識指標及能力指標,其中知識指標所包含的要素圍繞軟件開發(fā)生命周期主要活動提取出來的,如需求、架構(gòu)、過程、質(zhì)量保證及標準等這些要素通過傳統(tǒng)且成熟的授課方法可以達成;在能力指標中,溝通能力將培養(yǎng)學(xué)生將客戶需求轉(zhuǎn)化為系統(tǒng)需求的能力;協(xié)調(diào)權(quán)衡指標對應(yīng)的是相互沖突的目標,提供備選方案的能力;工程設(shè)計指標對應(yīng)的是在軟件工程中對應(yīng)用負責人的工程方法進行設(shè)計的能力;而持續(xù)學(xué)習(xí)指標對應(yīng)的是在項目實施過程中有效工作、對系統(tǒng)能按照系統(tǒng)工程思路設(shè)計等能力的培養(yǎng),而這些指標很難以傳統(tǒng)的授課模式達成。
為了達到“軟件工程導(dǎo)論”課程中對學(xué)生工程能力的培養(yǎng),同時考慮到實施過程中的痛點問題,筆者從兩個方面進行了課堂的拓展,開展了“以學(xué)生為中心、以大賽為驅(qū)動,以集中課程設(shè)計為輔助”的實踐。
第一個方面的拓展借助本專業(yè)的全國性質(zhì)的大賽,以大賽為驅(qū)動,對“軟件工程課堂”進行延展[6],促工程能力目標達成;第二個方面借助本專業(yè)的為期兩周的集中課程設(shè)計環(huán)節(jié)對理論課堂進行延展,促工程能力目標的達成。本文以北京工業(yè)大學(xué)軟件工程專業(yè)的“軟件工程導(dǎo)論”課程為例介紹這兩個方面的實踐過程。
針對“軟件工程導(dǎo)論”課程設(shè)置學(xué)期靠前,學(xué)生基礎(chǔ)弱的痛點,作者在授課過程中借助微信小程序入門門檻低,學(xué)生易上手的特點,將全國“微信小程序大賽”引入課堂,與“軟件工程導(dǎo)論”課程有機的結(jié)合在一起,同時利用“微信小程序大賽”賽程與課程時間相吻合的優(yōu)勢,開展了以大賽為驅(qū)動的課堂延展實踐。經(jīng)過三年的實踐,取得了很好的實踐效果,達到了“大賽驅(qū)動課堂教學(xué)延展,促軟件工程能力目標達成”的效果。
以2021年春季學(xué)期的“軟件工程導(dǎo)論”課程為例,課堂人數(shù)為74人,其中參加微信小程序大賽的人數(shù)為65人,占比為87.84%,如圖2所示。
圖2:“軟件工程導(dǎo)論”學(xué)生參加“微信小程序”占比示意圖
從這個數(shù)據(jù)可以看出,學(xué)生對通過參與大賽對自身能力培養(yǎng)的需求和希望還是很大的,從而體現(xiàn)了這一措施是完全符合“以學(xué)生為中心”的舉措。
由于大賽的賽程與課堂教學(xué)環(huán)節(jié)時間上是相吻合的,給“軟件工程導(dǎo)論”課程中知識傳授與實踐落地的能力培養(yǎng)提供了非常好的機會。在授課過程中,教師通過對參賽小組的指導(dǎo),將軟件工程理論原則與實踐有效的結(jié)合起來,對學(xué)生的知識的獲取以及能力的培養(yǎng)起到了非常大的促進,取得了很好的效果。
三年完賽學(xué)生共計200余人。其中獲得國家一等獎2組,國家三等獎1組,華北賽區(qū)一等獎3組,二等獎2組,三等獎2組。而且,通過大賽的驅(qū)動不僅避免了枯燥的軟件工程理論傳授,且對學(xué)生的能力指標達成起到了非常好的支撐,如圖3所示是本次參加小程序大賽學(xué)生反饋大賽對能力達成顯式指標支撐示意圖。圖4所示是參加大賽對能力達成隱式指標支撐示意圖。
圖3:大賽對學(xué)生能力達成顯式指標支撐示意圖
圖4:大賽對學(xué)生能力達成隱式指標支撐示意圖
除以大賽驅(qū)動促能力達成舉措之外,授課教師還借助在小學(xué)期集中課程實踐的環(huán)節(jié),進一步開展課堂延展促能力培養(yǎng)的實踐。
本專業(yè)小學(xué)期的集中課程實踐為期兩周,在實踐設(shè)置設(shè)計方面采用如下設(shè)計,已達到課堂拓展及能力達成的目標:
(1)延展課堂案例,將課堂案例落地于集中的課程實踐。針對痛點問題1,筆者將在“軟件工程導(dǎo)論”課堂中的案例延展到集中的課程設(shè)計環(huán)節(jié),有效的將理論課堂與實踐課堂銜接在一起,實現(xiàn)課堂的延展。
(2)明確評價指標,引導(dǎo)學(xué)生規(guī)范方法,自主學(xué)習(xí)。針對痛點問題2,筆者在課程實施過程中明確提出評價指標,規(guī)范要求,并注重環(huán)節(jié)的指導(dǎo),大大的促進了學(xué)生學(xué)習(xí)能力,協(xié)調(diào)溝通能力等隱性指標的達成。
(3)提供成熟框架,充分做到“軟件工程導(dǎo)論”的“引”和“導(dǎo)”的課程作用。針對痛點問題3,在課程中給學(xué)生提供成熟的框架,如在本學(xué)期的實施過程中引入“若依框架”,引導(dǎo)學(xué)生在有限的時間內(nèi)掌握框架的部署,應(yīng)用,體驗敏捷開發(fā)以迭代的思想。
筆者通過調(diào)查問卷的方式,對實踐環(huán)節(jié)能力達成情況進行了調(diào)查,調(diào)查結(jié)果如圖5所示。
圖5:集中課設(shè)對工程能力指標支撐示意圖
同時,筆者對能力指標達成的顯式指標及隱式指標分別進行了調(diào)查分析,得到如圖6所示的調(diào)查結(jié)果。
圖6:集中課設(shè)對工程能力指標達成示意圖
從圖6可以看出,大多數(shù)參與調(diào)查的同學(xué)認為能力達成為“基本達成”,符合導(dǎo)論對學(xué)生的導(dǎo)學(xué)的課程定位。
軟件工程導(dǎo)論課程是軟件工程專業(yè)課程的先導(dǎo)課程,該課程是否能為軟件工程專業(yè)的學(xué)生正確打開軟件工程領(lǐng)域的大門,起到重要作用。為了切實做到導(dǎo)論課程“導(dǎo)”及“引”的課程作用,以及對學(xué)生工程能力培養(yǎng)奠定基礎(chǔ),作者開展了“以學(xué)生為中心,以大賽為驅(qū)動,以集中課程設(shè)計為輔助”的工程實踐能力促成的實踐探索。
經(jīng)過三輪次的實踐積累,取得了較好的成效。筆者通過調(diào)查問卷的方式分別對大賽驅(qū)動方式以及集中課程輔助方式對“軟件工程導(dǎo)論”課程拓展助力方面進行的調(diào)查,調(diào)查結(jié)果如圖7,圖8所示。
圖7:大賽驅(qū)動方式對課堂教學(xué)助力調(diào)查示意圖
圖8:集中課設(shè)對課堂助力調(diào)查示意圖
其中圖7是對通過大賽驅(qū)動方式對課堂教學(xué)和學(xué)生能力培養(yǎng)的調(diào)查結(jié)果,結(jié)果顯示93.24%的同學(xué)認為是有所助力的。
圖8所示是參加集中小學(xué)期課設(shè)的學(xué)生的調(diào)查結(jié)果,調(diào)查結(jié)果依然顯示絕大多數(shù)同學(xué)認為,這種方式是對理論課堂的有效延展,對能力指標達成的有效支撐。