喬雨
(南京工業(yè)大學浦江學院計算機與通信工程學院,南京 211200)
《軟件工程》是高校計算機軟件相關(guān)專業(yè)中的一門核心課程,它的產(chǎn)生是為了適應計算機軟件不斷增長的需求,擺脫軟件危機的困擾[1]。《軟件工程》目前是計算機軟件學科中的一個重要分支,它的工程思想和設計方法能夠指導計算機軟件的開發(fā)和維護,嚴格遵循軟件工程方法,可以大大提高軟件開發(fā)的效率與質(zhì)量,顯著減少軟件開發(fā)和維護中的問題[1]。
《軟件工程》這門課程主要介紹了軟件工程的基本原理、軟件開發(fā)過程及過程中使用的工具[2]。因此,結(jié)合《軟件工程》的學科背景以及課程特點[3],以聚焦軟件質(zhì)量為基礎,將軟件工程的知識體系分為:軟件工程=工具+方法+過程,如圖1 所示。
由圖1 可見,“質(zhì)量焦點”在金字塔的最底層,這不難理解,因為軟件工程就是為了應對軟件危機誕生的學科,其目標就是為了要關(guān)注軟件安全,構(gòu)建和維護高質(zhì)量的軟件。而要構(gòu)建高質(zhì)量軟件,則要重點關(guān)注軟件過程中可能出現(xiàn)問題的環(huán)節(jié),將溝通、計劃、建模、構(gòu)建和部署等過程進行有效地組織,而軟件過程就是指明從軟件的誕生到結(jié)束這一生命周期內(nèi),開發(fā)與構(gòu)建系統(tǒng)時要遵循的步驟。

圖1 軟件工程知識體系
方法是指在整個過程中,如何構(gòu)建系統(tǒng)的方法學。例如,如何分析用戶需求;如何對產(chǎn)品進行測試驗收;如何進行系統(tǒng)架構(gòu)設計等。
了解了過程,掌握了方法,那么具體落到操作層面,就涉及到對工具的使用。通過輔助工具,可以幫助把一些流程規(guī)范起來,提高開發(fā)的效率。例如Bug 跟蹤工具、源代碼管理工具等。因此,軟件工程的核心內(nèi)容就可以圍繞“軟件開發(fā)的過程、分析與設計的方法學,以及輔助工具”展開。
教學內(nèi)容的設計是課程教學設計的首要問題,每一門課程都有其自身的結(jié)構(gòu),或者說本身就是一個概念體系[4]。在做《軟件工程》課程教學設計之時,首先將該門課程的知識點進行梳理和總結(jié),形成知識架構(gòu)。

圖2 《軟件工程》知識點思維導圖
在上面的內(nèi)容中已經(jīng)分析了《軟件工程》課程的總體內(nèi)容,根據(jù)圖1 給出的公式,可以將該門課程的知識結(jié)構(gòu)具化為如圖2 所示的思維導圖。通過梳理出的知識結(jié)構(gòu),教師能夠形成教學的知識脈絡,明細整個課程的教學目標和重難點;學生也能夠更清晰地把握本課程的知識分布,了解每一個知識點在整個課程知識體系中所處的位置以及知識點之間的相互聯(lián)系,進而達到幫助學生“善學習”的目標。
“理想的學習方式是讓學習者運用其產(chǎn)出的知識,并且使用特定的問題解決策略來解決有意義的問題。這樣有助于形成所謂的‘情境性知識’,亦即在特定情境下完成有意義的工作而產(chǎn)生的知識[5]。”《軟件工程》這門課通常安排在第五或者第六學期,這個階段的學生已經(jīng)有HTML、Java 和數(shù)據(jù)庫等知識基礎,并且通過這些相關(guān)的課程設計或者學校的實踐項目,具備了一些軟件開發(fā)的經(jīng)驗。基于這樣的前提,我們對《軟件工程》課程的教學方法進行改進,不再按照書本上進行“就理論講理論”[6],而是結(jié)合學生在實踐過程中可能遇到的問題,以及企業(yè)在軟件研發(fā)過程中遇到過的經(jīng)典問題作為實例進行分析,實現(xiàn)“情境式教學”。
具體安排如表1 所示,首先將課本中知識按章節(jié)分別進行實例場景設計,用問題串的形式進行知識點導入,用解決問題(任務驅(qū)動)的任務目標讓學生帶著問題去學習章節(jié)中具體的知識點。這種面向?qū)n}化、實例化的教學過程設計,將傳統(tǒng)的講學轉(zhuǎn)變?yōu)閷W為主,基于教材又高于教材,通過介紹核心理論知識、布置學習任務、確定討論主題等環(huán)節(jié)[7],引導學生在目標任務的前提下去主動地學習課程的知識點,并將理論方法應用于實際問題的解決,為他們?nèi)蘸竽軌蚋涌焖俚剡m應研發(fā)類的工作打下基礎。

表1 軟件生命周期教學內(nèi)容設計思路
進入《軟件工程》課程學習的學生已經(jīng)具備了微、小型項目的實踐經(jīng)歷,但是小型項目的實踐過程很難真正體會到軟件中的工程思想和設計方法,因此在《軟件工程》課程的教學設計中,根據(jù)軟件研發(fā)的生命周期“項目規(guī)劃→需求分析→設計→編碼→測試→運行維護”這六個階段,適當?shù)慕M織小組討論或者角色扮演等環(huán)節(jié)。在這樣的教學環(huán)節(jié)中,教師分別對軟件研發(fā)周期中涉及到的主要崗位進行介紹(如表1),包括這些崗位所需要具備的知識技能、工作內(nèi)容、工作職責以及崗位之間的聯(lián)系和差異等;通過這樣的方式間接地去引導學生對自己未來職業(yè)發(fā)展的思考(包括但不限于“我未來想從事哪一個崗位”、“這個崗位是干什么的?”、“我離理想的崗位還有多大的差距?”等等)。
通過這種結(jié)合崗位角色的教學設計能夠幫助學生在后續(xù)的就業(yè)擇業(yè)方面能夠做出更加理智地選擇,幫助緩解學生面臨就業(yè)時感到迷茫的狀態(tài)。
本文通過分析了應用型本科教育環(huán)境下,計算機軟件相關(guān)專業(yè)中《軟件工程》的課程地位和現(xiàn)狀,分析了課程知識體系及學生的知識儲備情況,提出將未來就業(yè)崗位相關(guān)的內(nèi)容和性質(zhì)融合到教學過程中,引導學生不僅善學習、會思考,還能為本科畢業(yè)后的就業(yè)提前做好準備,使得培養(yǎng)出的學生在學習和就業(yè)方面更加有擔當。