徐傳運 張楊 李剛
摘要:當前業(yè)界對高校培養(yǎng)的軟件工程人才的滿意度較低,該文基于建構主義思想,以工程項目實踐為教學內容的核心,從項目實踐類課程時間先行、課時最大化,教學活動圍繞軟件工程能力的形成和提升而設置與展開,專業(yè)教師設置主題問題對教學過程進行旗幟式導向,督導教師采用過程與結果相結合的綜合評價方式全程監(jiān)督控制,以全面提升本科生的工程能力。
關鍵詞:工程能力培養(yǎng);軟件工程本科教育;建構主義
中圖分類號:G642 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2022)05-0173-03
軟件工程專業(yè)自2002年設置為獨立專業(yè),已經存在多年,產業(yè)界對高校培養(yǎng)的軟件工程人才的滿意度仍然較低,主要表現(xiàn)為多數(shù)應屆本科畢業(yè)生不能迅速適應開發(fā)環(huán)境、難以較好地滿足技術崗位的能力要求,用人單位需要進行較長時間的二次培訓才能使其達到所在崗位的基礎水平[1-2]。出現(xiàn)這些問題的根本原因在于當前工程教育受傳統(tǒng)“知識本位”的影響,將人才培養(yǎng)的重點放在學生對專業(yè)理論知識的了解和掌握,忽視工程能力的訓練和職業(yè)素養(yǎng)的培養(yǎng)[3]。而一提到強化工程能力,就將其等同于強化實踐教學,片面地認為只需要增加實踐教學環(huán)節(jié)的時間和內容即可。
1 軟件工程專業(yè)特點
1)產品不可見、復雜性高。不同于其他工程專業(yè)的產品,軟件產品不可眼見、不可觸摸。由于問題域的復雜、管理開發(fā)過程的困難、軟件實現(xiàn)的靈活、系統(tǒng)行為的離散描述,使得復雜性成為軟件的一個基本特征。此特點使得學生在學習初期對軟件開發(fā)過程及其產品的“真面目”難以得到直觀的認識,從而提高了學習軟件開發(fā)的“入門門檻”,導致學生在學習后期由于難以厘清復雜的邏輯關聯(lián)而產生較強的挫敗感。
2)技術更新周期短、種類多。軟件技術發(fā)展迅速、更新周期短、技術種類紛繁復雜,導致課程內容安排比較困難,時常出現(xiàn)入學時制訂的培養(yǎng)計劃在大三、大四課程實施時就已過時的現(xiàn)象。面臨各種技術流派,課程設置如何取舍?教師如何講授技術背后相對穩(wěn)定的基本原理?學生如何理解到技術表面后的本質?如何提高知識遷移能力?如何提高自學能力?這些問題都是軟件工程專業(yè)課程體系的組織者、參與者必須面對和解決的。
3)設計與制造交錯融合。軟件項目的設計和制造不存在明確的時空分割(雖然軟件工程的理論研究者試圖把二者區(qū)分開來,但實踐起來比較困難,敏捷開發(fā)的廣泛使用即是證明),難以分別培養(yǎng)設計師和制造工人,因此軟件專業(yè)的教育既要培養(yǎng)學生的設計能力,又要訓練學生使用工具、方法、技術的制造技能。
4)過程規(guī)范性要求高。由于軟件產品的不可見性,軟件過程的質量在過程中難以直接被度量、控制、優(yōu)化,因此軟件工程通過過程的可控確保質量的可控。過程規(guī)范性要求軟件工程教學既要提高學生的技術應用能力、又要提高學生的過程規(guī)范意識,但是技術相對容易講授,而意識、習慣的形成卻需要在真實場景中長時間的實踐訓練。
5)學習環(huán)境搭建成本較低。因為大部分商業(yè)軟件都提供免費的教學授權,迅猛發(fā)展的開源軟件也為教學提供免費資源,所以相對于其他專業(yè),搭建滿足商業(yè)標準的軟件工程實訓環(huán)境的成本相對較低。而成本低廉、滿足達到商業(yè)標準的學習環(huán)境,使得創(chuàng)建真實的校內實訓環(huán)境成為可能。
以上特點決定了軟件工程教育在教學內容設置、教學過程組織等方面都應該有其自身的規(guī)律和特點,而軟件工程教育要充分利用這些規(guī)律和特點,才能提高軟件工程專業(yè)學生的工程能力。
2 面向工程能力的教育理念
2.1 軟件工程教育的目標定位
當前,軟件工程教育存在兩個具有代表性的流派。1)理論派。目標定位主要遺傳自計算機科學專業(yè)的培養(yǎng)目標,認為軟件工程專業(yè)的本科生應該系統(tǒng)地掌握計算機科學的理論知識體系,主張學生只有掌握系統(tǒng)的理論體系,才能理解方法、技術、工具后面的科學原理,才具備長期發(fā)展的根本動力。因此,課程體系強調數(shù)學、物理、電子等工程基礎課程,強調計算機組成原理、編譯原理、數(shù)據(jù)結構與算法、數(shù)據(jù)庫原理、操作系統(tǒng)原理、網絡等專業(yè)基礎課程。2)實用派。以商業(yè)的計算機培訓機構為代表,將掌握特定軟件開發(fā)方向的特定技術作為培養(yǎng)重點。為了最大限度地降低時間成本和經濟成本,更快更好地適應市場的即時需求,實用派的培養(yǎng)方式為直接面向軟件開發(fā)崗位的短期實際需求,從短平快的案例教學法入手,快餐式地訓練學生使用當下主流、十分有限的幾種技術和若干工具的技巧。
理論派提倡知識傳授,所培養(yǎng)的學生實踐能力較差,在解決實際問題的時候難以理論聯(lián)系實際,軟件企業(yè)不得不根據(jù)其所在研發(fā)崗位的技術需求進行較長時期的二次培訓。實用派提倡技術培訓,所培養(yǎng)的學生存在后續(xù)發(fā)展?jié)摿Σ蛔?、自主學習習慣缺失、終身學習能力較差等先天問題,無法促進甚至跟隨企業(yè)和行業(yè)的觀念換代與技術更新。
產生上述問題的本質原因在于前文提到的“設計與制造交錯融合”這一固有特點,軟件企業(yè)希望軟件工程人才能夠主導軟件工程,發(fā)現(xiàn)和解決軟件項目中出現(xiàn)的問題,收集和分析需求、提出有效的解決方案、實現(xiàn)客戶滿意的系統(tǒng),并能夠協(xié)調項目涉及的各種資源,推進工程達到預期的目標。這就需要軟件工程人才既要有堅實的理論基礎,也要有豐富的專業(yè)技能,還得有分析和解決問題的能力、實踐能力、創(chuàng)造力、溝通能力和領導力、商務與管理能力、倫理道德、終身學習能力等全面的職業(yè)素養(yǎng),以確保其勝任軟件工程項目的綜合開發(fā)、進而促進軟件產業(yè)的迭代更新。
2.2 基于建構主義的核心思想
“工程教育”一方面是工程的,因為其課程和教學內容必須通過工程加以規(guī)定和充實;另一方面是教育的,因為其關注社會進步和個人發(fā)展。知識是客觀事物的屬性與聯(lián)系的反映,是客觀世界在人腦中的主觀映像[4]。根據(jù)建構主義的觀點:知識的獲得不能直接傳遞,必須經由建構,任何沒有經過重新構建的知識記憶都是無效的學習?;诮嬛髁x的觀點認為教育有兩大目標:引導學生對新信息進行解釋,強調學習的結果,價值有限;訓練學生構建解釋的能力,強調學習的方法更為關鍵。
完善的工程教育所培養(yǎng)的人才,首先是一個心智健全的社會人,有良好的身體素質和心理素質;其次需要有扎實過硬的專業(yè)技能;最后還應該具備一系列專業(yè)相關的工程特質。由于軟件產品的不可見、高復雜性,軟件質量保證的有效方法就是進行開發(fā)過程控制,“可控的開發(fā)過程可以得到可控的質量”。因此,在軟件工程教育過程中,要特別訓練學生對質量負責的意識、按照規(guī)范進行開發(fā)的意識。由于軟件技術更新周期短,開發(fā)人員需要持續(xù)更新自身的知識和技術,因而較強的自學能力尤為重要。因為一方面軟件主要服務于其他應用領域,需要與其他領域的客戶進行深入溝通,而溝通的質量直接影響軟件產品的正確性;另一方面軟件不可見,使得項目人員需要使用各種語言和工具來描述開發(fā)過程、中間和最終的結果、過程和結果中存在的問題、相應的解決方案等,所以良好的溝通與精確的表達在軟件工程中非常重要。除基本的工程特殊素質之外,軟件工程教育需要特別強調規(guī)范意識、質量意識、責任心、自學能力、溝通能力等素質的全面培養(yǎng)。但工程素質是開發(fā)人員的內在品質,簡單的知識講授難以直接轉化為學生的綜合素質。因此,基于建構主義中“行動、反饋、修正解釋”迭代往復的基本思想,本文認為必須在一個又一個的軟件項目開發(fā)過程中進行反復的閉環(huán)式研磨,才能真正培養(yǎng)軟件工程專業(yè)本科生的工程特質。
3 面向工程能力的教學內容
軟件工程專業(yè)學生技能和素質的形成和提升需要依托基于具體軟件工程項目的技能實踐訓練,而知識體系的構建也需要在實踐中進行修正、提升。因此,面向工程能力的教學內容組織應以工程項目實踐為中心展開,項目實踐類課程時間先行、課時最大化,其他課程都服務于項目實踐類課程,其教學內容組織的基本原則如下:
1)教學內容以項目實踐課程為中心,即全部課程或為項目實踐課程提供必要的知識、技能儲備,或是項目實踐課程的理論總結和提升,所有課程內容都應與實踐課程相關聯(lián)。
2)項目實踐課程分為個體編程項目實踐、團體軟件開發(fā)技術項目實踐、系統(tǒng)分析與設計項目實踐、綜合項目實踐等不同層次。個體編程項目實踐是在學習編程語言之后,以訓練程序思維、熟悉編程語言為目的的實踐;團體軟件開發(fā)技術項目實踐是在學習高級軟件開發(fā)技術后,以學習軟件實現(xiàn)技術為目的項目實踐;系統(tǒng)分析與設計項目實踐是在學習需求分析、系統(tǒng)設計原理、軟件架構、設計模式等課程之后展開實踐訓練,以鍛煉學生軟件需求收集與分析、建模技能為目的的實踐。
3)項目實踐課程時間安排先行,將與工程能力培養(yǎng)相關的課程的時間優(yōu)先級設為最高。由于軟件開發(fā)技術實踐與工程基礎課、計算機科學基礎課沒有緊密的關聯(lián),因此實踐類課程應該盡量提前。要突破傳統(tǒng)先開設工程基礎課,再開設專業(yè)基礎課的內容組織方式,因為此種組織方式使學生得到實踐訓練的時間太少,而技能和素質需要在反復的項目訓練中才能得以提升。
4)保證項目實踐類課程的課時安排充足,在滿足主要教學內容的前提下盡量壓縮非專業(yè)課程、非實踐課程的課時安排。傳統(tǒng)軟件工程教學內容組織時,計算機科學基礎課占用了過多的內容,影響了工程能力的訓練。對于軟件工程專業(yè)來說,軟件工程專業(yè)只需要計算機科學相關理論課程的概念和基本原理,而知識細節(jié)、證明不是非常必要。因而可以抽取計算機科學基礎課的核心內容進行講授,如果學生有特殊興趣,可以作為選修內容,甚至可以把多門計算機基礎課綜合為一門。
4 面向工程能力的教學方法
當前軟件工程專業(yè)教師們傾向于用分析、演繹的方法從事教育教學,圍繞“教師中心、教材中心和課堂中心”組織[5],導致學生只是記憶了一堆知識,遇到實際問題不知道如何用概念進行描述、如何運用所學知識分析問題的原因、如何提出可行的方案實施。
由于高校教師在專業(yè)教學中的作用主要有:使用有效的教學手段幫助學生用現(xiàn)有經驗、知識重構所傳授的知識,幫助提高學生構建知識的效率和準確性;構建學生可以進行工程實踐的環(huán)境,制訂實踐目標,被動地提供幫助,并對學生的行為進行評價。因此面向工程能力的軟件工程教學方法的核心思想為:整個教學以學生為中心,專業(yè)教師設置“主題”問題旗幟式導向,督導教師全程隱形監(jiān)督控制,充分激發(fā)學生主動自發(fā)學習的內在欲望。
因此,面向工程能力的軟件工程教學方法應著眼于以下三個方面:
1)作為主觀愿意自主學習的自由個體,學生自身有著學習理論知識、鍛煉專業(yè)技能、提高職業(yè)素養(yǎng)的強烈欲望,能夠積極主動地查閱相關技術資料、進行各類實驗或實踐;
2)專業(yè)教師能夠制訂有針對性、切實可行的學習目標,結合不同情境的不同“主題”提出環(huán)環(huán)相扣的問題,并在學生自主學習過程中及時有效地提供必要的提點,循序漸進地引導學生自主優(yōu)化自己的項目開發(fā)技能,因人而異地協(xié)助每一個學生找到適合自己的軟件工程能力提升途徑;
3)在整個教學過程中,教評分離,督導教師能夠采用“離線”書面(如電子郵件、紙質材料等)和“在線”面談(如討論會、一對一談話等)相結合的方式,全程“隱形”監(jiān)督,實時關注所有學生的學習動向,定期了解所有學生每一階段的學習態(tài)度、學習結果和學習方法。根據(jù)事先確定的考核指標進行綜合評價,并對每一個學生給出有針對性的改進建議。
在整個過程中,學生的關鍵在于“主動自發(fā)”,必須在日常教學中不斷強化其教學主體的意識,時時、事事、處處地主張“我要學”;專業(yè)教師的關鍵在于“目標的設置和問題的設計”,只有學習目標明確可行、問題主題切實合適,才能真正引領學生的思想和精神進入工程實踐的情景,幫助其完成從“在讀本科生”到“工程技術人員”的角色轉換;督導教師的關鍵在于“考核目標的明確和考核標準的制定”,目標決定了處理問題的出發(fā)點和具體方法,督導教師必須與足夠了解軟件系統(tǒng)開發(fā)流程、具有一定項目開發(fā)背景的專業(yè)教師充分討論,結合學習目標明確考核目標,根據(jù)考核目標制定考核標準,才能充分利用考核環(huán)節(jié)激發(fā)學生自主學習的內在動力。
5 結束語
當下軟件企業(yè)及產業(yè)界對高校培養(yǎng)的軟件工程人才的滿意度較低,軟件工程專業(yè)本科教育的培養(yǎng)目標、培養(yǎng)方案、課程體系、教學方法、評價方法等需要加強研究和實踐。針對此問題和現(xiàn)狀,本文認為軟件工程教育的關鍵在于提升本科生的工程能力,因此在解析當前軟件工程教育的主要問題和軟件工程專業(yè)特點的基礎上,提出面向工程能力的軟件工程專業(yè)本科培養(yǎng)模式,教學內容以工程項目實踐為核心,以軟件項目開發(fā)的實踐訓練為框架,項目實踐類課程時間先行、課時最大化,其他課程都服務于項目實踐類課程,教學活動圍繞軟件工程能力的形成和提升而設置與展開;教學過程以學生為主體,專業(yè)教師設置“主題”問題進行旗幟式導向,督導教師采用過程評價與結果評價相結合的綜合評價方式全程隱形監(jiān)督控制,充分激發(fā)學生主動自發(fā)學習的內在欲望。
本模式并非主張弱化軟件工程理論知識的教學,而是要強化把理論與實踐相結合的能力培養(yǎng),即知識的運用能力(包含用概念、模型、原理等描述問題的能力,理論化地分析問題的能力,基于理論、結合問題的特殊性提出解決方案的能力,方案優(yōu)劣評估的能力,實踐經驗、教訓總結與提升的能力)。高校四年培養(yǎng)的軟件工程專業(yè)本科生不應該是只會一個個知識點、不能參與軟件項目開發(fā)的“工程”書生,也不應該在職業(yè)生涯中永遠只能是流水線、機械性編碼的IT工匠,而應該是一個馬上讀春秋的職場將帥,能夠持續(xù)地用知識提升技術、用技術理解知識。
本文提出的面向工程能力的軟件工程專業(yè)本科培養(yǎng)模式適用于小班教學,針對當前一般高校師生比大的現(xiàn)狀,需要開展深入的探索和研究。
參考文獻;
[1] 張小川,凃飛,王森,等.軟件工程專業(yè)學生實踐能力培養(yǎng)體系[J].計算機教育,2013(16):1-3,8.
[2] 文俊浩,徐玲,熊慶宇,等.漸進性階梯式工程實踐教學體系的構造[J].高等工程教育研究,2014(1):159-162,180.
[3] U.S. National Academy of Engineering.The Engineer of 2020: Visions of Engineering in the New Century[M].Washington,D.C.:National Academies Press,2004.
[4] Crawley E F, Malmqvist J,Ostlund S,et,al.重新認識工程教育一國際 CDIO培養(yǎng)模式與方法[M].顧佩華,沈民奮,陸小華,譯.北京:高等教育出版社,2009.
[5] 徐玲,高旻,文俊浩,等.軟件工程專業(yè)實踐教學質量保障體系探索[J].實驗室研究與探索,2015,34(8):205-208,217.
【通聯(lián)編輯:代影】
收稿日期:2021-11-26
基金項目:該文為重慶市研究生教育教學改革研究項目“校企合作實踐基地驅動的計算機類專業(yè)型碩士工程能力培養(yǎng)模式”階段性成果(課題編號:yjg213065)
作者簡介:徐傳運(1979—),男,重慶人,副教授,博士,重慶師范大學計算機與信息科學學院軟件工程系教師,主要研究方向為軟件工程、人工智能。