姜 瑛,王紅斌,丁家滿,毛存禮
(昆明理工大學 信息工程與自動化學院,云南 昆明 650500)
昆明理工大學信息工程與自動化學院計算機科學與技術(shù)專業(yè)獲批國家級一流本科專業(yè)建設(shè)點,是云南省首個通過工程教育專業(yè)認證和復認證的計算機類專業(yè)。軟件工程是計算機類專業(yè)的核心課程,堅持立德樹人,體現(xiàn)以學生發(fā)展為中心,注重學生德智體美勞全面發(fā)展。該課程首先在昆明理工大學信息工程與自動化學院計算機科學與技術(shù)專業(yè)開設(shè),于2011 年、2014 年起向昆明理工大學信息工程與自動化學院物聯(lián)網(wǎng)工程、軟件工程專業(yè)本科生授課。經(jīng)過多年建設(shè),該課程已成為計算機類專業(yè)的特色課程,涉及計算機科學、數(shù)學、工程學和管理學等多學科的基本原理,幫助學生建立軟件開發(fā)的系統(tǒng)性概念,為更深入學習和從事軟件工程實踐奠定了良好的基礎(chǔ)。
學生在課程學習中培養(yǎng)分析問題、解決問題的能力,將其應用于后續(xù)的綜合程序課程設(shè)計、畢業(yè)設(shè)計實踐中。軟件工程課程知識點多,基礎(chǔ)理論較為抽象,傳統(tǒng)教學中大量課時集中在軟件工程基礎(chǔ)理論和原理的講解中,弱化了如何將軟件工程理論應用于實際軟件開發(fā)的思路和過程,對學生思維方式、工程能力和創(chuàng)新能力的訓練不足。因此,該課程的教學改革重點解決以下問題:
(1)在有限學時內(nèi)既要完成課程理論知識的講解,又要著重培養(yǎng)學生將軟件工程的理論知識轉(zhuǎn)化為實踐應用的能力。此外,需要讓學生深入接觸軟件行業(yè)和實際的軟件開發(fā),了解社會對專業(yè)能力的要求,為未來的職業(yè)發(fā)展建立基礎(chǔ)。
(2)軟件工程相關(guān)技術(shù)發(fā)展迅速,涉及面廣、實用性強,需要緊密跟蹤軟件工程的發(fā)展,在課程中持續(xù)融入新知識、新技術(shù)、新方法,充分發(fā)揮學生主動學習的積極性,引導學生建立自主學習和終身學習的觀念。
(3)從解決簡單問題升級到復雜工程問題,增加課程內(nèi)容、練習、測試、實踐的難度。通過系統(tǒng)化、科學化、工程化的軟件開發(fā)體驗,培養(yǎng)學生分析、解決復雜工程問題的能力,提升學生的創(chuàng)新思維和創(chuàng)新意識。
(4)將專業(yè)知識教育與思想政治教育相融合,增加軟件工程師職業(yè)道德規(guī)范等專題討論,全面提升學生的社會責任感、創(chuàng)新精神和實踐能力。
課程是人才培養(yǎng)的微觀單元,是提升人才培養(yǎng)質(zhì)量的重要基礎(chǔ)環(huán)節(jié)。教育部發(fā)布的《關(guān)于一流本科課程建設(shè)的實施意見》明確指出,課程是人才培養(yǎng)的核心要素,課程質(zhì)量直接決定人才培養(yǎng)質(zhì)量[1]?;谲浖こ陶n程特點,胡曉鵬等[2]分析了軟件工程課程教學中存在理論知識枯燥、案例教學不成體系等問題,給出應用型課程建設(shè)核心內(nèi)容,結(jié)合軟件工程課程內(nèi)容貫穿軟件開發(fā)全過程的特點,提出“一軸六點四環(huán)兩翼”的軟件工程課程體系架構(gòu)。孫小兵等[3]根據(jù)軟件工程課程及其發(fā)展特點,提出建設(shè)實踐驅(qū)動的軟件工程教學案例庫,介紹了14 種面向軟件工程實踐的課程案例庫,這些案例庫可根據(jù)軟件開發(fā)環(huán)境和技術(shù)變化進行相應的更新。馬麗等[4]根據(jù)信息產(chǎn)業(yè)崗位需求和CDIO“做中學”思想,將軟件工程課程內(nèi)容設(shè)計為與CDIO 能力逐級培養(yǎng)相適應的“構(gòu)思、運作、設(shè)計、實現(xiàn)”等教學模塊,在項目任務中將模塊知識點進行分解,以構(gòu)建相應的課程資源,建立多元化學習評價體系。陳永等[5]按照工程教育專業(yè)認證的理念和方法,對軟件工程課程進行質(zhì)量提升建設(shè),從教學大綱規(guī)劃設(shè)計、課程教學能力培養(yǎng)目標、課程考核內(nèi)容設(shè)置、課程持續(xù)改進等環(huán)節(jié)進行分析。魯亮等[6]以安順學院為例,在大數(shù)據(jù)時代背景下,系統(tǒng)分析地方高校開展軟件工程課程建設(shè)的充分性和必要性,從教學現(xiàn)狀、教學方法、教學模式及教學過程改進等方面,詳細探討有關(guān)軟件工程課程建設(shè)所面臨的系列問題,并提出應對措施與建議。
然而,上述研究主要針對軟件工程課程體系、教學案例、教學過程等方面進行探索和實踐,對如何基于高階性、創(chuàng)新性、挑戰(zhàn)度的金課標準,針對促進學生能力提升的目標開展軟件工程課程建設(shè),卻并未明確系統(tǒng)化的建設(shè)思路。
為此,本文探討了軟件工程課程系統(tǒng)化建設(shè)途徑[7-9],通過課程內(nèi)容反映軟件工程領(lǐng)域的前沿性和時代性,在課程教學中強調(diào)互動性和針對性,基于實踐導向著重培養(yǎng)學生分析、解決復雜工程問題的能力和創(chuàng)新能力。
2016 年起,昆明理工大學信息工程與自動化學院的軟件工程課程,按照工程教育認證標準制定課程教學目標,定義了課程目標與畢業(yè)要求間的關(guān)系,明確了學生學習軟件工程課程后要達到的知識、能力和素質(zhì)。課程緊密結(jié)合國家軟件產(chǎn)業(yè)發(fā)展戰(zhàn)略,以軟件開發(fā)的需求分析、設(shè)計、編碼、測試、維護及項目管理為主線,重新梳理軟件工程的知識地圖與思維導圖,確定了包括軟件開發(fā)方法、軟件開發(fā)過程、軟件開發(fā)實踐及軟件前沿專題在內(nèi)的課程內(nèi)容。課程要達到的課程目標包括:
(1)應用數(shù)學、自然科學、工程基礎(chǔ)和計算機工程專業(yè)知識表達軟件項目的相關(guān)需求,建立適當?shù)南到y(tǒng)分析與設(shè)計模型,分析并改進系統(tǒng)解決方案。
(2)應用數(shù)學、自然科學和工程科學的基本原理,識別、表達并通過文獻研究分析軟件開發(fā)的可行性,提出合理的解決方案。同時,運用計算機工程的思維方法,判斷系統(tǒng)應用中設(shè)計指標的變化對系統(tǒng)造成的影響,然后提出優(yōu)化解決方案。
(3)針對軟件項目特性,設(shè)計滿足特定需求的系統(tǒng)、單元或業(yè)務流程,并在設(shè)計環(huán)節(jié)中既體現(xiàn)創(chuàng)新意識,又考慮社會、健康、安全、法律、文化及環(huán)境等因素。
(4)基于科學原理,采用科學方法對軟件項目進行研究,設(shè)計可行的方案,并開展系統(tǒng)研發(fā)、測試及分析,得到合理有效的結(jié)論。
(5)理解軟件開發(fā)團隊中每個角色的含義及對于整個團隊環(huán)境和目標的意義,并在團隊中做好自身角色承擔的事情。
針對以上課程目標,作為昆明理工大學信息工程與自動化學院計算機類專業(yè)第一門開展基于自建慕課的混合式教學的專業(yè)課。2018 年9 月,軟件工程慕課在智慧樹平臺上線運行后,提出了“立足實踐導向,促進能力提升”的混合式教學方法,線上通過慕課完成知識教育,線下通過專題討論、實踐練習深化與鞏固知識,實現(xiàn)學生的素質(zhì)培養(yǎng)及能力提升。
課程建立了完整的線上+線下教學體系,學生學習路徑如表1 所示。線上自建慕課完成軟件工程基礎(chǔ)知識的講授,通過開發(fā)實例講解與演示(慕課/線上)、思路講解與分析(見面課/線上+線下)、實踐練習與討論(課堂/線下),將教學重點轉(zhuǎn)移到通過課堂教學提升學生的能力方面。
Table 1 Learning path for software engineering course表1 軟件工程課程學習路徑
課程以實踐為導向,在學生學習路徑中所有環(huán)節(jié)都引入軟件項目實踐的相關(guān)內(nèi)容,以培養(yǎng)和提升學生運用工程思維分析、解決實際問題的能力,達到課程目標。為了讓學生在理解和掌握軟件工程原理和方法后,將其應用到軟件開發(fā)實踐過程當中。本文在課程中立足實踐導向,建立了翻轉(zhuǎn)課堂的基本原則,具體為:
(1)讓學生接觸企業(yè)實際軟件項目,了解相關(guān)行業(yè)軟件開發(fā)現(xiàn)狀,感受軟件技術(shù)對人們工作和生活的改變。通過增加大量軟件開發(fā)實例講解與實踐練習,鍛煉學生學以致用的能力。
(2)向?qū)W生講解行業(yè)發(fā)展的新動態(tài)及社會對軟件人才的新要求,讓學生了解新一輪世界科技革命和產(chǎn)業(yè)變革,通過探討軟件工程最新的技術(shù)發(fā)展和研究進展,拓寬學生視野和知識面。
(3)通過設(shè)計項目導向式的實踐應用,增大軟件開發(fā)實踐題目難度,引導學生深入思考,在階段性學習后應用相關(guān)理論知識解決復雜工程問題,激發(fā)學生的創(chuàng)新思維和意識。
課程在直播見面課上,以課程組開發(fā)的橫向項目“小區(qū)物業(yè)收費管理系統(tǒng)”為例,詳細講解該系統(tǒng)的需求分析、設(shè)計、編碼實現(xiàn)、協(xié)同開發(fā)等軟件工程的核心環(huán)節(jié),向?qū)W生展示一個實際系統(tǒng)開發(fā)的完整過程,讓學生加強將理論知識應用在開發(fā)實踐中的理解。在翻轉(zhuǎn)課堂教學中,課程采用項目小組的形式實施實踐練習,讓學生承擔軟件分析人員、設(shè)計人員、程序員、測試人員等不同角色的任務,進一步了解軟件實際開發(fā)過程。例如,課程選用當前的商品軟件(如網(wǎng)上購物系統(tǒng))或與相關(guān)軟件研發(fā)企業(yè)合作后提煉的課程案例(APP 軟件用戶評論數(shù)據(jù)分析系統(tǒng)),針對課程目標設(shè)計小組討論式學習任務,通過學生個人自主學習和團隊小組討論式學習共同完成[10]。在課堂上,學生根據(jù)其在項目組中的分工,在課堂上匯報、分享個人與小組的實踐成果和學習心得,并進行小組間的討論,以進一步提升自身分析、解決問題的能力。
由于軟件工程相關(guān)技術(shù)發(fā)展迅速,涉及面廣、實用性強,課程緊密跟蹤軟件工程的發(fā)展,課程內(nèi)容、練習、測試、實踐的難度持續(xù)增加。因此,需要通過系統(tǒng)化、科學化、工程化的軟件開發(fā)體驗,培養(yǎng)學生分析、解決復雜工程問題的能力,以進一步提升學生的創(chuàng)新思維和創(chuàng)新意識。
軟件工程課程明確了課程的德育目標,設(shè)計了德育融入模式。通過昆明理工大學云南省人工智能重點實驗室研發(fā)的云嶺智能翻譯機案例講解、“輕松購”項目創(chuàng)新實踐、楊芙清院士等杰出人物介紹,在教學中融入德育理念,不斷改進教學方法。
在教學中,針對第3 個課程目標,本課程特別設(shè)計了軟件工程師職業(yè)道德規(guī)范的專題討論,要求學生課前學習智慧樹平臺上有關(guān)軟件工程師的視頻,事先了解軟件工程相關(guān)的行業(yè)崗位,將IEEE 計算機協(xié)會和ACM 聯(lián)合指導委員會的軟件工程和職業(yè)實踐專題組制定的《Software Engineering Code of Ethics and Professional Practice》(英文版)發(fā)給學生閱讀。同時,課前將學生分為小組,查找與軟件工程師的職業(yè)道德規(guī)范相關(guān)素材,并對素材進行整理與分析,讓學生學習如何針對一個具體問題進行查找、分析、整理資料,使學生掌握軟件工程師職業(yè)道德規(guī)范及對軟件工程師的要求,結(jié)合自身情況和行業(yè)現(xiàn)狀進行思考。
課堂講授過程中,學生先匯報查找的素材與小組觀點,通過師生互動、生生互動,對相關(guān)案例進行分析與總結(jié),理論聯(lián)系實際,采用啟發(fā)式教學方式,讓學生理解軟件工程師職業(yè)道德規(guī)范的內(nèi)涵,要求學生從軟件工程師的角度思考軟件工程師或軟件開發(fā)工作與道德、經(jīng)濟、文化和法律等方面的關(guān)系,引導學生樹立和踐行社會主義核心價值觀,為自身職業(yè)規(guī)劃奠定基礎(chǔ)。
課程通過在混合式教學過程中加強課上、課下的引導和教學,使德育教育充分滲入軟件工程教育教學中,以提升學生學習的積極性和主動性,加強學生對專業(yè)的認同感,促進學生應用專業(yè)知識為國家作出貢獻的使命感。
為了進一步突出以學生為中心的思想,通過分析線上、線下學習數(shù)據(jù),對學生有疑問、不理解的知識點開展有針對性的課堂教學及實踐練習。針對學生軟件工程課程學習中主動性與針對性不足的現(xiàn)狀,基于課程前期開展基于混合式教學的課程導學,以直播為特征的課程在線導學相關(guān)實踐,提出基于形成性評價的軟件工程課程導學方法[11]。
實踐表明,應用基于形成性評價的課程導學模式,能提升學生學習軟件工程課程的主動性和積極性,在解決復雜工程問題時學生的實踐能力也得到一定提升。教師通過評估學生自主學習成效并分析存在的問題,進一步強化了學生自主學習的導向。
為了提升學生學習能力與課程教學效果,昆明理工大學信息工程與自動化學院教學團隊基于軟件工程的課程目標,探討了目標導向的軟件工程課程小組討論式學習模式,設(shè)計小組討論式學習任務,提出小組討論式學習效果的綜合評價體系[12]。通過學生自主學習和小組討論式學習相互促進,有效支撐了課程目標達成,提升了學生解決復雜工程問題的實踐能力。
工程教育認證是一項復雜的系統(tǒng)工程,涵蓋內(nèi)容廣泛,核心問題是提升學生能力[9]。在工程教育認證中,為了評價課程知識、能力、素質(zhì)等是否達到預期,需要對課程教學過程和教學結(jié)果進行課程目標達成度評價。由于目前線上平臺主要考核學生對知識的掌握程度,本課程加大課堂練習、上機實踐及分組討論在成績評定中的比例,以便對學生的實踐能力進行針對性評價。因此,本課程設(shè)計了多元化的課程評價體系如表2所示。
Table 2 Evaluation system for software engineering course表2 軟件工程課程評價體系
為了切實提升課程教學質(zhì)量,本課程自2018年起實施教考分離,主要采用課程組自建題庫組卷。2021 年起,本課程期末考試邀請國防科技大學軟件工程課程組出題。出題前,將課程教學大綱、教材信息等提交給國防科技大學軟件工程課程組,由其出A、B 卷試題并提供試題參考答案,試題覆蓋5 個課程目標并與軟件工程實際緊密相關(guān)。第三方試題的使用在一定程度上促進了學生重視學習,在期末考試準備上投入了更多時間。
2018 年9 月起,本文課程已面向昆明理工大學信息工程與自動化學院計算機科學與技術(shù)、軟件工程專業(yè)的本科生開展了基于自建慕課的混合式教學,學生對課程的評價結(jié)果均為優(yōu)秀,對教學方法給予肯定。學習過程與結(jié)果表明,“立足實踐導向,促進能力提升”的混合式教學方法進一步提升了教學針對性,增強了學生學習的主動性和積極性。本文課程2020年被認定為首批國家級一流本科課程。
近兩期教學,面向昆明理工大學信息工程與自動化學院2019 級、2020 級計算機科學與技術(shù)專業(yè)本科生。2021-2022 學年課程期末考試采用國防科技大學(跨省985 高校)試題,由于難度略高于以往試題,學生考試成績略有下降;2022-2023 學年期末考試采用國防科技大學(跨省985高校)試題難度基本與2021-2022 學年持平,學生考試成績得到一定的提升,期末考試成績?nèi)绫? 所示。針對本課程的5 個課程目標,2021-2023 學年的課程目標達成情況如圖1所示。
Fig.1 Comparative analysis of achievement for software engineering course objectives in the 2021-2023 academic year圖1 2021-2023學年軟件工程課程目標達成情況比較
Table 3 Comparison of final exam scores for software engineering course in the 2021-2023 academic year表3 2021-2023學年軟件工程課程期末考試成績對比
本課程的5 個目標是為了培養(yǎng)學生在面對復雜工程問題時,能進行分析與設(shè)計建模、提出優(yōu)化思路、綜合考慮多方因素、設(shè)計可行方案、有效開展團隊協(xié)作等能力。由圖1 可見,隨著課程作業(yè)、實踐等任務難度逐年增加,80%的課程目標達成呈現(xiàn)上升趨勢,表明課程教學改革效果明顯,學生在解決復雜工程問題時的能力得到了提升。
通過實施“立足實踐導向,促進能力提升”混合式教學方法,軟件工程課程在教學效果、教學質(zhì)量上均有較大提升。昆明理工大學信息工程與自動化學院課程團隊將持續(xù)改進混合式教學方法,不斷探索新的教學理念,借助信息化技術(shù)進一步提升教學效果,積極推廣教學方法。