于學軍 張 麗 俞 敏 朱 青
(北京工業大學信息學部 北京 100124)
《軟件工程導論》課程是軟件工程專業的一門專業基礎必修類課程[1]。其課程地位是軟件工程專業學生專業能力培養的敲門磚,同時為后續的軟件工程專業課程奠定基礎。北京工業大學軟件工程專業培養方案中,軟件工程導論課程的設置基本目標為使學生理解什么是工程,什么是軟件工程等基本概念,基本理論,掌握運用軟件工程方法進行軟件構造,管理的原則問題,為后續軟件工程系列課程打下良好的基礎。該課程設置在第3學期,以全生命周期開發過程的“方法、人、工具及過程”為主線,不僅強調軟件工程知識的傳授,同時強調培養學生工程能力,要求它同時也是一門實踐性課程[2-4]。達到課程目標存在如下困難:
痛點1:有限學時限制:很難在有限的32學時內,對學生的能力進行綜合培養。
痛點2:學生接受限制:傳統的教學方式使學生已經習慣了以教師“教”為主的授課模式,這種模式對能力培養存在難度。
痛點3:能力基礎限制:開課學期是第3學期,其先修課程只有C語言和面向對象的程序設計,學生的基礎稍弱,對本次課程能力的培養也很困難。
本文圍繞工程能力培養目標達成,提出“以學生為中心,以大賽為驅動,以集中課程設計為輔助”的實踐探索模式[5]。
結合軟件工程導論課程的課程目標,作者將其達成指標分為兩類:顯式指標及隱式指標,兩類指標分別對工程基礎指標元素進行不同程度的支撐,如圖1所示。

圖1:軟件工程導論課程指標體系
如圖1所示,軟件工程指標體系中包括知識指標及能力指標,其中知識指標所包含的要素圍繞軟件開發生命周期主要活動提取出來的,如需求、架構、過程、質量保證及標準等這些要素通過傳統且成熟的授課方法可以達成;在能力指標中,溝通能力將培養學生將客戶需求轉化為系統需求的能力;協調權衡指標對應的是相互沖突的目標,提供備選方案的能力;工程設計指標對應的是在軟件工程中對應用負責人的工程方法進行設計的能力;而持續學習指標對應的是在項目實施過程中有效工作、對系統能按照系統工程思路設計等能力的培養,而這些指標很難以傳統的授課模式達成。
為了達到“軟件工程導論”課程中對學生工程能力的培養,同時考慮到實施過程中的痛點問題,筆者從兩個方面進行了課堂的拓展,開展了“以學生為中心、以大賽為驅動,以集中課程設計為輔助”的實踐。
第一個方面的拓展借助本專業的全國性質的大賽,以大賽為驅動,對“軟件工程課堂”進行延展[6],促工程能力目標達成;第二個方面借助本專業的為期兩周的集中課程設計環節對理論課堂進行延展,促工程能力目標的達成。本文以北京工業大學軟件工程專業的“軟件工程導論”課程為例介紹這兩個方面的實踐過程。
針對“軟件工程導論”課程設置學期靠前,學生基礎弱的痛點,作者在授課過程中借助微信小程序入門門檻低,學生易上手的特點,將全國“微信小程序大賽”引入課堂,與“軟件工程導論”課程有機的結合在一起,同時利用“微信小程序大賽”賽程與課程時間相吻合的優勢,開展了以大賽為驅動的課堂延展實踐。經過三年的實踐,取得了很好的實踐效果,達到了“大賽驅動課堂教學延展,促軟件工程能力目標達成”的效果。
以2021年春季學期的“軟件工程導論”課程為例,課堂人數為74人,其中參加微信小程序大賽的人數為65人,占比為87.84%,如圖2所示。

圖2:“軟件工程導論”學生參加“微信小程序”占比示意圖
從這個數據可以看出,學生對通過參與大賽對自身能力培養的需求和希望還是很大的,從而體現了這一措施是完全符合“以學生為中心”的舉措。
由于大賽的賽程與課堂教學環節時間上是相吻合的,給“軟件工程導論”課程中知識傳授與實踐落地的能力培養提供了非常好的機會。在授課過程中,教師通過對參賽小組的指導,將軟件工程理論原則與實踐有效的結合起來,對學生的知識的獲取以及能力的培養起到了非常大的促進,取得了很好的效果。
三年完賽學生共計200余人。其中獲得國家一等獎2組,國家三等獎1組,華北賽區一等獎3組,二等獎2組,三等獎2組。而且,通過大賽的驅動不僅避免了枯燥的軟件工程理論傳授,且對學生的能力指標達成起到了非常好的支撐,如圖3所示是本次參加小程序大賽學生反饋大賽對能力達成顯式指標支撐示意圖。圖4所示是參加大賽對能力達成隱式指標支撐示意圖。

圖3:大賽對學生能力達成顯式指標支撐示意圖

圖4:大賽對學生能力達成隱式指標支撐示意圖
除以大賽驅動促能力達成舉措之外,授課教師還借助在小學期集中課程實踐的環節,進一步開展課堂延展促能力培養的實踐。
本專業小學期的集中課程實踐為期兩周,在實踐設置設計方面采用如下設計,已達到課堂拓展及能力達成的目標:
(1)延展課堂案例,將課堂案例落地于集中的課程實踐。針對痛點問題1,筆者將在“軟件工程導論”課堂中的案例延展到集中的課程設計環節,有效的將理論課堂與實踐課堂銜接在一起,實現課堂的延展。
(2)明確評價指標,引導學生規范方法,自主學習。針對痛點問題2,筆者在課程實施過程中明確提出評價指標,規范要求,并注重環節的指導,大大的促進了學生學習能力,協調溝通能力等隱性指標的達成。
(3)提供成熟框架,充分做到“軟件工程導論”的“引”和“導”的課程作用。針對痛點問題3,在課程中給學生提供成熟的框架,如在本學期的實施過程中引入“若依框架”,引導學生在有限的時間內掌握框架的部署,應用,體驗敏捷開發以迭代的思想。
筆者通過調查問卷的方式,對實踐環節能力達成情況進行了調查,調查結果如圖5所示。

圖5:集中課設對工程能力指標支撐示意圖
同時,筆者對能力指標達成的顯式指標及隱式指標分別進行了調查分析,得到如圖6所示的調查結果。

圖6:集中課設對工程能力指標達成示意圖
從圖6可以看出,大多數參與調查的同學認為能力達成為“基本達成”,符合導論對學生的導學的課程定位。
軟件工程導論課程是軟件工程專業課程的先導課程,該課程是否能為軟件工程專業的學生正確打開軟件工程領域的大門,起到重要作用。為了切實做到導論課程“導”及“引”的課程作用,以及對學生工程能力培養奠定基礎,作者開展了“以學生為中心,以大賽為驅動,以集中課程設計為輔助”的工程實踐能力促成的實踐探索。
經過三輪次的實踐積累,取得了較好的成效。筆者通過調查問卷的方式分別對大賽驅動方式以及集中課程輔助方式對“軟件工程導論”課程拓展助力方面進行的調查,調查結果如圖7,圖8所示。

圖7:大賽驅動方式對課堂教學助力調查示意圖

圖8:集中課設對課堂助力調查示意圖
其中圖7是對通過大賽驅動方式對課堂教學和學生能力培養的調查結果,結果顯示93.24%的同學認為是有所助力的。
圖8所示是參加集中小學期課設的學生的調查結果,調查結果依然顯示絕大多數同學認為,這種方式是對理論課堂的有效延展,對能力指標達成的有效支撐。