應時 李小紅 劉偉 李曉偉
摘 要:圍繞軟件工程知識體系及其學習、構造、再造和應用等方面的特點,在建構主義學習理論的指導下,結合工程學科特點,討論學好軟件工程專業(yè)知識并鑄造專業(yè)素質的價值觀念,探討突出和強化專業(yè)知識學習的教學方法,通過總結教學實踐工作體會,提出亟待解決的一系列教學問題。
關鍵詞:軟件工程知識體系;建構主義學習理論;專業(yè)知識學習
DOI: 10. 11907/rjdk.192729
開放科學(資源服務)標識碼(OSID):
中圖分類號:TP434
文獻標識碼:A
文章編號:1672-7800(2020)001-0015-03
0 引言
2018年5月4日,國務院學位委員會辦公室制訂并發(fā)布了《工程類博士專業(yè)學位研究生培養(yǎng)模式改革方案》與《關于制定工程類碩士專業(yè)學位研究生培養(yǎng)方案的指導意見》,文件就工程類博士的基本知識要求指出:“學位獲得者應掌握本工程領域堅實寬廣的基礎理論、系統(tǒng)深入的專業(yè)知識和工程技術基礎知識;熟悉相關工程領域的發(fā)展趨勢與前沿,掌握相關的人文社科及工程管理知識…”。對于工程碩士的培養(yǎng),國務院文件也明確指出:“在高校制定的培養(yǎng)方案中,要突出理論方法扎實、技術應用過硬的工程類碩士專業(yè)學位研究生培養(yǎng)特色[2]。
從軟件產業(yè)對軟件工程專業(yè)人才的要求來看,扎實的專業(yè)知識是軟件工程師的必備素質。如華為公司明確要求應聘者“熟悉軟件工程領域理論知識,熟悉大型軟件系統(tǒng)架構知識及實現方法,熟悉軟件框架的設計和編碼論證”;北京京航計算通訊研究所招聘計算機軟件專業(yè)技術人員的一個基本要求是“應聘者要在軟件工程,尤其要在軟件測試與分析方面,掌握系統(tǒng)深入的專業(yè)知識”。
為培養(yǎng)軟件工程知識扎實的專業(yè)人才,眾多教育者從不同角度進行了多種探索。有的通過改革教學方案,創(chuàng)新教學模式,采用先進的教學技術增強學生學習軟件工程的興趣[3];有的通過實驗教學、案例教學和實踐教學,加深學生對專業(yè)知識的理解[4];有的選擇采取校企合作和國際辦學措施等。但是,無論采取什么對策和措施,對于學生來說,專業(yè)知識內容的學習是最核心內容。對于教師來說,引導學生學好專業(yè)知識內容永遠是一切教學方法的出發(fā)點和歸宿。
實驗教學與實踐教學的作用和意義毋庸置疑。軟件工程知識體(SWEBOK)把“軟件職業(yè)實踐”也放人其中,“軟件職業(yè)實踐”也是一種知識。與其它類型的知識一樣,這些知識也可通過知識學習的方式掌握,工程和項目實踐不是培養(yǎng)學生實踐開發(fā)能力的唯一道路。對于案例教學和實踐教學,在課程資料準備完善和實踐環(huán)境搭建成熟的基礎上,同樣可以通過知識學習的方式,完成重要內容和基礎性內容的學習。師生均應培養(yǎng)直面困難的勇氣和創(chuàng)造力,充分準備,把知識學習做到極致,而不是回避、繞開,甚至是有目的地設法間接替代困難。
本文結合教學實踐工作體會,圍繞軟件工程知識體系及其學習、構造、再造和應用等方面的特點,探討建構主義理論下的教學方法,總結實踐教學中遇到的問題,以期為軟件工程專業(yè)教學改革提供參考。
1 強化知識學習的必要性
突出和強化軟件工程專業(yè)知識的學習十分重要,具體表現在以下方面:
(1)雖然對于培養(yǎng)實用技術型人才的高等職業(yè)學校,可以強化實踐教學,但對于培養(yǎng)軟件工程高層次人才的一流高校,強化知識學習是十分必要的。
(2)對于具有軟件工程扎實知識基礎和豐富實踐經驗的人員,其新知識學習應該以知識學習方式為主。
(3)對于立志成為軟件工程高層次科研開發(fā)人才的人,必須具備把專業(yè)知識學好的意識和能力。
(4)對于參加實踐工作多年、知識基礎薄弱的專業(yè)技術人員,在其繼續(xù)教育過程中,尤其需要突出并強化專業(yè)知識學習。
2 教學方法
2.1 指導意義
建構主義學習理論[5]認為:學習的目標是學習者把客觀知識及結構內化為自己的知識。學習是學習者構建知識的過程,學習者不是簡單被動地接受信息,而是主動構建知識的意義。學習者根據自己的經驗背景,對外部信息進行主動選擇、加工和處理。學習者基于個體經驗背景建構對知識的理解,取決于特定情境下的學習歷程。
最典型的學習方式是探究式學習。探究式學習是基于問題解決活動構建知識的過程。在教學過程中,應該通過有意義的問題情境,讓學習者通過不斷發(fā)現問題和解決問題,學習與探究問題相關的專業(yè)知識,形成解決問題的專業(yè)技能,以及自主學習專業(yè)知識的能力。換言之,探究式學習要求學習者積極主動地參與,主動地體驗。通過這些活動,形成特有的學習方式、完成知識內化。
除探究式學習外,情境教學也是一種很有效的教學方法,它是建立在有感染力的真實事件或真實問題基礎上的教學。知識、學習與情境化的活動聯(lián)為一體。學生應該在真實任務情境中發(fā)現問題、分析問題、解決問題。情境教學要求學習者全身心地沉浸到學習情境中。
2.2 面向軟件工程專業(yè)的教學方法
本文將軟件工程知識分為以下8大類:理論性知識、理念性知識、原則性知識、方法性知識、技術性知識、過程性知識、技能性知識和關于能力及其培養(yǎng)的知識。軟件工程的知識教學目的是:引導學生系統(tǒng)、正確、深入地掌握專業(yè)知識?!跋到y(tǒng)”是指在整體上,知識是成體系的;在局部上,知識是有完整性的;在知識點上,知識是被透徹理解了的。“正確”指概念學習正確、內容理解正確、知識構建正確、知識應用正確。“深入”指融會貫通(知識內容上的貫通、知識發(fā)展歷程上的貫通)、理解本質、學以致用。
由于軟件工程學科知識大多實踐指向非常強,為了使學生讀懂、悟透、用活書本上的專業(yè)知識,在教學中,應努力引導學生把自己原有的知識和經驗,作為新知識的生長點,引導他們從原有的知識和經驗中,主動構建新的知識,同時學生的學習應是多維度、多層次、多粒度、反復迭代的。為此,本文基于建構主義學習理論,對教學實踐探索進行總結,提出引導學生關聯(lián)其它知識、掌握軟件工程知識的教學方法。
(1)引導學生從多個角度融會貫通地掌握軟件工程知識體系,工作方法的要點是:不但要讓學生學好知識體系中的各個知識點,還要讓他們掌握這些知識點之間的關聯(lián)知識,了解基于歷史發(fā)展軌跡的知識點演化關系和演化過程,使學生多角度、深入、準確地掌握專業(yè)知識,可從自己原有知識和經驗中,主動建構新的軟件工程知識。
(2)引導學生把軟件工程知識與其它專業(yè)骨干課程知識關聯(lián)起來進行學習,從而使學生圍繞軟件工程知識,構建更大的知識體系網。盡管軟件工程課程強調與程序設計課程的區(qū)別,從而使學生能夠超越編碼層次,在更全局性和抽象性的層面掌握軟件工程知識,但同時也應注意到程序設計范型是各種不同軟件工程方法的基石,程序設計方式和能力在深層次上影響軟件設計和需求分析的技術和方法。引導學生把軟件工程課程知識與系統(tǒng)軟件課程知識(操作系統(tǒng)、編譯原理、數據庫系統(tǒng)、中間件)關聯(lián)起來學習十分重要,不但有助于學生形成軟件工程知識體系,也有助于其形成完整的計算機專業(yè)知識體系,更加深入地領會支撐軟件工程知識的科學思想。
(3)引導學生將軟件工程知識與新的熱點前沿專業(yè)領域知識關聯(lián)起來進行學習。軟件工程教材內容通常滯后于軟件工程和計算機技術發(fā)展、應用步伐,更落后于軟件工程在其它學科中的創(chuàng)新發(fā)展。因此,引導學生把軟件工程知識與新的熱點前沿專業(yè)領域知識關聯(lián)起來進行學習,可激發(fā)學生學習熱情和動力。與新的熱點前沿專業(yè)領域知識的關聯(lián)學習主要包括:與云計算/云服務的關聯(lián)學習,與大數據、機器學習的關聯(lián)學習,與深度學習、人工智能的關聯(lián)學習等。具體包括:①深度神經網絡中計算單元的級聯(lián)層次結構與軟件系統(tǒng)的層次化結構;②深度神經網絡的誤差反向傳播算法、逐層傳播誤差修正要求、梯度與層次化軟件系統(tǒng)控制過程的逐層調用和數據參數的逐層傳遞;③深度神經網絡中控制過擬合和模型訓練時間長的Drop-out方法及其算法與軟件工程師利用軟件設計工具逐步求精地設計軟件體系結構,以及自適應軟件根據情境變化,自動更新軟件體系結構的結構單元及其連接關系等。以上內容彼此具有很多相通和共同的地方,因此可引導學生進行關聯(lián)學習,使學生更加深刻地理解軟件工程專業(yè)知識,并感知軟件工程知識鮮活的時代價值。
(4)引導學生將軟件工程知識投射于新聞熱點問題和實踐問題,以提高學生學習興趣。這種在有感染力的真實事件或真實問題基礎上進行的教學,是在建構主義學習理論指導下的情境教學方法。如當代大學生十分熟悉京東和天貓等電商購物平臺,可引導學生關注電商平臺能力及建設發(fā)展歷程。天貓2018年僅用1小時16分37秒,“雙11”的成交總額就突破了912億元。該數據超過了2015年“雙11”全天的成交額,可利用這個事實數據進一步引導學生發(fā)現問題、分析問題并解決問題,包括引導學生從軟件工程專業(yè)角度,思考軟件開發(fā)和軟件運維等多方面問題,思考應應用哪些知識才能實現平臺多項功能。情景式教學還有利于學生全身心地沉浸到學習中,進一步學好高性能高可用軟件架構設計、軟件服務平臺在線維護和優(yōu)化等軟件工程知識點。
(5)引導學生把軟件工程知識與其它學科知識關聯(lián)起來進行學習。軟件工程的許多思維方法、知識內容特點與其它學科知識在實質上是相通的。因此,學生已理解并掌握的共性知識可作為學好、用好軟件工程知識的背景知識基礎,如程序代碼設計與文章寫作、軟件系統(tǒng)開發(fā)與文學著作創(chuàng)作、軟件系統(tǒng)智能運維與智慧醫(yī)療診斷等;還可利用軟件工程知識的普適性和通用性,引導學生把軟件工程過程管理與學生學業(yè)過程管理、科研論文寫作過程管理進行關聯(lián);把對軟件系統(tǒng)的理解、創(chuàng)新和優(yōu)化與對計算機軟件類科研論文及其成果認知、優(yōu)化等進行類比學習,從而使學生更好地掌握軟件工程知識及應用方法。
3 教學問題
(1)軟件工程專業(yè)知識大都內容抽象,在實踐教學中,少有學生針對實踐問題進行提問,師生互動較少,這使知識教育無法深入強化,更無法確認學習成效。由于學生主動投入不夠,討論式、問題探究式的教學方式難以實施。
(2)目前部分軟件工程教材存在一些知識性錯誤,導致教學出現尷尬與矛盾,使學生熱情受挫。因此有必要針對全國本科教育軟件工程專業(yè),組織教學經驗與行業(yè)實踐經驗豐富的人員統(tǒng)一編寫教材,并輔助編寫知識讀本。
(3)在教學組織方面,專業(yè)課程課時不足。學時數嚴重不足長期困擾著軟件工程課程與很多其它核心基礎課程,導致教師無法充分展開內容教學,更無法多層次多角度地圍繞重難點講解更多實例,也無法針對知識點進行必要的重復和貫通,無法旁征博引,促使知識點融合。
(4)實踐課程缺乏反思環(huán)節(jié)。當實踐教學的具體工作或項目進展不順時,大部分學生沒有從知識層面反思其知識理解和知識應用方面存在哪些問題,應該如何做才能更好地掌握相關專業(yè)知識,甚至還有錯誤的觀點認為“多做就自然會了,多做就自然好了”。
4 結語
軟件工程專業(yè)以計算機科學為基礎,知識點理論性、工程性、技術性強,學習和教學難度大,對教師知識水平、專業(yè)能力和綜合素質等方面提出了很高要求,同時,在進行專業(yè)知識內容學習的過程中,對學生抽象思維、系統(tǒng)思維、學習能力、理解力、想象力等方面也提出了巨大挑戰(zhàn)。本文基于建構主義學習理論,提出引導學生關聯(lián)其它知識、掌握軟件工程知識的教學方法,同時對實際教學中存在的問題進行了總結。
軟件工程知識學習意義重大。如何激發(fā)學生學習興趣,加深學生對基礎知識的理解和掌握,增強學生對軟件項目的實際開發(fā)能力,需要師生、高校等多方協(xié)同努力。
參考文獻:
[1] 國務院學位委員會辦公室.工程類博士專業(yè)學位研究生培養(yǎng)模式改革方案[EB/OL].http:// http.sciencenet.cn/mobile.php? cat=news&id=412 149&mobile=l&type=detail.
[2] 國務院學位委員會辦公室.關于制訂工程類碩士專業(yè)學位研究生培養(yǎng)方案的指導意見[EB/OL].http://www.moe.gov.cn/s78/A22/A22_gggs/A 22_sjhj/201805/t201 8051 1_33 5692.html.
[3]方芳,劉袁緣,趙一石,等.基于MOOC的軟件工程專業(yè)教學模式創(chuàng)新實踐[J].計算機教育,2018(8):82-85.
[4]侯雪梅,李志博,于磊,等.軟件工程課程群案例庫建設和實踐教學方法研究[J].大學教育,2019( 10):11-13.
[5] 萊斯利·斯特福,杰里·蓋爾.教育中的建構主義[M].高文,徐斌燕,程可拉,等,譯.上海:華東師范大學出版社,2002.
(責任編輯:江艷)
基金項目:國家自然科學基金項目( 61672392)
作者簡介:應時(1965-),男,博士,武漢大學計算機學院教授、博士生導師,研究方向為大型軟件系統(tǒng)的智能化運維管理、軟件工程智能分析與優(yōu)化等;李小紅(1974-),女,博士,武漢大學計算機學院副教授,研究方向為軟件工程。