康雁 李彤 張璇
摘 要:通過分析目前教學當中存在的問題,探討將慕課引入軟件工程課程教學中,實現慕課與工程教育混合式教學的改革與探索,以培養(yǎng)軟件工程卓越工程師的創(chuàng)新能力為目標,推動軟件工程慕課的建設。課程結合實際案例,指導學生以組進行軟件系統(tǒng)的開發(fā),讓學生完整的體驗軟件工程方面的專業(yè)基礎理論,建立起軟件開發(fā)的工程概念、原則和習慣,提升學生分析問題、解決問題,以及團隊協作、談判溝通等能力。
關鍵詞:慕課;SE-CDIO;創(chuàng)新能力;卓越工程師;協同育人
中圖分類號:TP311.5 文獻標識碼:A
Abstract:By analyzing the problems existing in the current teaching, this paper discusses how to introduce MOOCs into the teaching of software engineering,and implements the reform and exploration of the blended teaching of MOOCs and engineering education,in order to cultivate the innovation ability of excellent software engineers and promote the construction of software engineering MOOCs.With the integration of the course and practical cases,students are guided to develop the software system in groups,which enable students to fully apply the professional and basic theories in software engineering into practice,understand the concepts,principles and conventions of software development,and improve the abilities of analysis,problem solving,teamwork,communication and negotiation.
Keywords:MOOC;SE-CDIO;innovation;excellent engineer;cooperative cultivation
1 引言(Introduction)
“軟件工程”是軟件工程專業(yè)的專業(yè)核心必修課程,作為中國大學資源共享課程、國家精品課程、教育部-英特爾精品課程、云南省精品課程,在師資隊伍、教學設計、教學案例、實驗項目等方面進行了大量的積累。所在學院軟件工程專業(yè)獲得國家卓越工程師項目和云南省卓越工程師項目,“軟件工程”課程結合卓越工程師的培養(yǎng)目標,注重培養(yǎng)實踐能力強的工程人才?!败浖こ獭闭n程與深圳軟酷網合作已完成慕課錄制并上線,為后期建設奠定了良好的基礎。慕課(Massive Open Online Courses,MOOC)即大型開放式網絡課程,為學生提供了系統(tǒng)學習的可能性[1,2]。世界各國的大學和課程提供商提供了相應的平臺。通過翻轉課堂建設,有效地精簡“軟件工程”的授課時間和授課內容。按軟件實踐的過程重新梳理和設計知識點后,通過每次6—8分鐘的授課,保持學生的興趣和關注點。在精簡內容的同時,有效地補充課后實踐體系和課程輔導,加強學生的實踐動手能力培養(yǎng)。改革考核目標,通過靈活多變的能力評價,加強學生創(chuàng)新能力培養(yǎng),為學生接受知識和培養(yǎng)能力提供了新途徑。
為了加強對軟件工程卓越工程師能力培養(yǎng),本課程要求軟件工程的學生能適應不斷發(fā)展和改變的技術環(huán)境,成為同時掌握專業(yè)能力和管理能力的綜合人才,具有合理的知識體系結構和較寬的學科理論基礎,有助于卓越工程師能力的培養(yǎng)。
2 軟件工程實踐體系(Software engineering practice
system)
根據國家發(fā)展戰(zhàn)略,國際社會各國都逐漸加強科學和工程研究,強化科學與工程的高等教育,鼓勵創(chuàng)新,培育和發(fā)展創(chuàng)新性教育環(huán)境和系統(tǒng)[3-6]。軟件學院針對學院本科生開設了《軟件工程》這門必修課程,這門課在三年級上學期進行,學分為3,周學時為3,授課總學時為54。本課程是一門綜合性和實踐性很強的核心課程,主要內容包括軟件工程概述、可行性分析、需求分析、項目計劃與管理、面向對象分析與設計、系統(tǒng)架構和構件、軟件質量與質量保證。為通過課程支持結合應用背景的軟件開發(fā)和創(chuàng)新能力培養(yǎng),該學期開設了《軟件工程實驗》這門必修課程,學分為1,周學時為2,授課總學時為32。以軟件構思、軟件設計、軟件實現,以及軟件運作等為主線進行,結合軟件工程關鍵知識點出發(fā)設計實踐體系,支持對軟件工程知識的掌握和應用,從而培養(yǎng)卓越工程師人才的需要,具體的實踐體系由以下實驗組成。
第一個環(huán)節(jié)是軟件工程工具與環(huán)境安裝與應用,實踐的目的是通過對軟件開發(fā)工具的安裝流程和使用了解軟件工程開發(fā)流程,實踐主流的軟件工程技術和工具。
第二個環(huán)節(jié)是軟件工程標準化文檔撰寫,學生熟悉和掌握軟件工程標準化的概念、內容和意義,較為全面地了解軟件工程相關國際和國家標準,通過對標準化文檔的撰寫熟悉軟件生命周期,并且針對具體應用背景,進行項目可行性分析。
第三個環(huán)節(jié)是構思性實踐,“構思”要求學生按組考慮技術、企業(yè)戰(zhàn)略等因素,設立系統(tǒng)目標和要求;依靠分析技術,對待開發(fā)軟件系統(tǒng)所對應的問題域和系統(tǒng)責任進行分析和理解;對其中的事物和它們之間的關系產生正確的認識,并按照某種規(guī)范形成需求規(guī)約。這個環(huán)節(jié)將培養(yǎng)學生具有獨立分析和相互協調的能力。因為大部分學生擅長于完成具體的任務,不擅長尋找問題,所以這也是學生覺得最困難的部分。endprint
第四個環(huán)節(jié)是軟件項目管理實踐,學生掌握項目管理基本概念和工具,實踐人員管理、成本估算、質量管理、過程改進相關過程,針對構思部分得到的項目創(chuàng)建資源列表、資源分配,成本分配等。
第五個環(huán)節(jié)是軟件開發(fā)繪圖工具安裝與使用。要求學生培養(yǎng)面向對象的分析能力,使用UML繪圖和建模工具實踐確定項目的需求分析,給出業(yè)務處理模型、用例圖和包圖,使學生能夠運用工具進行系統(tǒng)分析和需求建模操作,生成標準需求規(guī)格說明書。
第六個環(huán)節(jié)是設計性實踐,學生通過一個產品、過程或系統(tǒng)的設計而進行實踐。在構思階段成果的基礎上,將關注點放在“如何實現”上,從對問題空間的建模轉移到解空間的建模。該過程為實現構思階段生成的需求模型引入計算模塊以及模塊之間的關系描述,并從提高軟件設計質量和效率方面改進軟件結構,完成概要設計說明書、數據庫設計說明書和詳細設計說明書。
第七個環(huán)節(jié)是軟件測試實踐,學生掌握軟件測試的策略和自動化工具,實踐自動化軟件測試用例設計以及單元測試過程,在此基礎上迭代地進行需求驗證,對前期的需求分析修改。
第八個環(huán)節(jié)是實現性實踐,學生掌握實施技術,實踐軟件的編碼、配置、集成、驗證、認證和對實施過程。學生利用自動化工具進行代碼版本控制、配置管理、權限管理、歷史記錄跟蹤等,按業(yè)界規(guī)范撰寫和管理源代碼。將程序設計藝術融入到編碼實踐中,要求學生較多地考慮程序的內存要求和運行時間等,提交用戶手冊等文檔。
第九個環(huán)節(jié)是運作性實踐,學生在相關網站和同學群中對開發(fā)出的系統(tǒng)進行實際應用,撰寫商業(yè)企劃書,了解融資和相應的營銷和服務渠道。并反饋到構思、設計和實現階段,對前期的需求、設計和編程等進行迭代式地修改。
軟件工程實踐體系具體要求學生能掌握教學課程以外的相關技術,以自學習的方式進行新知識的學習,并能運用相關技術創(chuàng)新地進行實際項目的構思、設計、實現和運作。體系涉及基礎面廣、可操作性強、環(huán)節(jié)之間層次分明、并強調循序漸進注重過程質量控制。學生通過平臺進行軟件工程生命周期各階段的實踐,在網上通過配置環(huán)境等進行項目合作,提交項目等,并完成網上測評。實踐體系重新編排教學內容以配合不同學習者的目標,促進回應和互動,進行靈活的實踐環(huán)節(jié)設計,較好地適應學生的多樣性。傳統(tǒng)教學中學生接觸到的教師和其他學生較為有限,由于時空的限制無法進行隨時的溝通。實踐體系使得學生可有效地進行溝通和交流,分享按不同學習目標編排的教學內容和想法。自主的參與極大地觸發(fā)了學生的積極性,使得學生按不同的興趣點和授受能力進行創(chuàng)新。
3 翻轉課堂建設(Flipped classroom construction)
軟件工程慕課由于授課時間及地點的靈活性,可縮短每次授課的時間,通過每次6-8分鐘左右時間的授課,保持學生的興趣和關注點。較短的時間片使得學生可自由地編排教學內容,易于制定不同的教學目標。教學目標的不同可有效地促進創(chuàng)新能力的培養(yǎng),并且對學生的能力進行多種方式的評價,著重卓越工程師創(chuàng)新能力的培養(yǎng)。以下針對傳統(tǒng)教學對創(chuàng)新能力培養(yǎng)存在的問題,對傳統(tǒng)授課知識點進行刪減,分為以下研討主題:
軟件工程的發(fā)展史:基于軟件工程發(fā)展過程中重要里程碑事件研討其意義和影響,學生交流關于工程的理解。
軟件生命周期:講授軟件生命周期中需求分析、軟件設計、軟件構造、軟件測試、軟件交付、軟件維護各階段,討論敏捷軟件、SCRUM、極限編程等。
面向對象軟件工程:討論軟件過程模型及其發(fā)展過程,對現代軟件過程模型進行比較和分析,講授面向對象方法在軟件工程學中的作用。
SE-CDIO和系統(tǒng)案例:以實踐案例分析講授SE-CDIO人才培養(yǎng)模式,風險投資項目,軟件著作權和知識專利,項目實踐過程。
軟件項目管理:講授軟件項目管理大師及項目管理的經典案例團隊組織與管理,講授軟件質量保障,軟件配置保障。
需求工程:討論軟件需求的開發(fā)和管理,以需求在整個軟件項目中的作用和開發(fā)過程為主線,完整描述了需求定義、需求獲取、需求分析、UML業(yè)務建模、需求規(guī)格說明、需求驗證和需求管理等需求工程活動。
面向對象需求分析:討論面向對象需求分析方法和面向對象建模工具,講授需求分析過程中UML業(yè)務建模和需求規(guī)格說明撰寫。
軟件設計:演示具體示例,講授設計視圖和設計圖、設計視角和設計關注、需求和涉眾、設計理由、設計描述的模板。
軟件體系結構設計:講授體系結構的原型構建、體系結構集成、測試關鍵需求、項目約束、體系結構風格、軟件體系結構邏輯設計、和軟件體系結構實現與完善。
體系結構的原型構建:討論包的創(chuàng)建、構件之間的接口、關鍵需求的實現、體系結構的原型構建要求及過程、體系結構原型。討論集成的策略、樁、驅動與集成測試用例、軟件體系結構設計文檔描述眾、體系結構集成與測試。
人機交互設計:討論人機交互設計的人類因素和計算機因素、一些人機交互設計原則、人機交互設計過程、經典的界面設計。
詳細設計中的模塊化與信息隱藏:討論優(yōu)秀設計的標準、設計質量、分解與模塊化、信息隱藏。
軟件構造:講授軟件構造概述,軟件構造活動,軟件構造實踐方法,討論軟件構造活動、重構、測試驅動開發(fā)、結對編程。
代碼設計:講授代碼的易讀性、易維護性、可靠性,講授使用模型輔助設計復雜代碼和問題代碼,使用模型輔助設計復雜代碼。
軟件測試:講授測試用例開發(fā)、代碼開發(fā)單元和測試用例間的關系、測試用例的選擇、隨機測試、基于規(guī)格的技術—黑盒測試方法、基于代碼的技術——白盒測試方法、特定測試技術;
軟件運營與演化:講授軟件可修改性與軟件維護、軟件維護的類型、軟件維護的高代價性、軟件維護過程與活動,討論軟件運營和軟件演化實踐。
新技術專題:討論基于搜索的軟件工程和大數據環(huán)境下的軟件工程新技術。endprint
傳統(tǒng)教學過程容易出現知識老化的現象。對于快速發(fā)展和不斷發(fā)生改變的IT新知識和技術,傳統(tǒng)課程教學時間和地點容易受限,課程內容難以快速調整,使得教學滯后于知識的發(fā)展。軟件工程慕課提供一種對傳統(tǒng)課程有效的補充方式,使得學生可以通過其他途徑掌握新技術,充分發(fā)揮學生的自學習能力。聯結主義式的慕課集結各種資訊從而實現高端的知識交換,使得學生可即時地接觸到新知識,并可根據學生的反饋靈活地改變所學內容,便于進行新知識的傳授,以及學生創(chuàng)新能力的培養(yǎng)。軟件工程慕課通過聯結課程內的教材或其他內容,混編大量不同的教學內容、同一內容的不同講解方式甚至相反的看法在一起,易于開拓學生的眼界,從而培養(yǎng)學生的創(chuàng)新精神。
4 SE—CDIO課程輔導建設(SE-CDIO curriculum
guidance construction)
為了有效地進行卓越工程師的培養(yǎng),本課程實現慕課和軟件生命周期的有機結合,進行慕課及工程教育模式[1,2]混合式教學的改革與探索。將整個課程分為SE-CDIO四個階段進行,具體為SE-Conceive軟件構思、SE-Design軟件設計、SE-Implement軟件實現、SE-Operate運作。按這四個階段教師不再進行課程的講授,更多的是執(zhí)行過程控制和導引的作用。各階段的具體內容設計如下:
SE-C的內容主要是軟件需求與建模。此階段要求學生針對目前的技術熱點,進行技術報告,體現自己的自學習能力。教師引導學生學習相關創(chuàng)新技術的資源,如TED演講等,了解目前正在出現的新技術,如3D和4D打印機、云計算、大數據、移動計算和虛擬計算應用等。學生要進行市場研究,找到所學習技術和當前軟件需求的結合點進行創(chuàng)新設計。教師在此階段要了解學生對知識的掌握是否正確,并且確認結合點可行。由于學生對現實問題缺乏了解,教師會引導選擇背景較為熟悉的創(chuàng)新項目,讓學生了解創(chuàng)新技術以及對現實問題的創(chuàng)新求解。讓學生針對現實世界的業(yè)務流程進行改革和創(chuàng)新,培養(yǎng)學生發(fā)現問題,以及創(chuàng)新性求解問題的能力。由于交叉領域易于進行創(chuàng)新,創(chuàng)新課程鼓勵學生和其他專業(yè)的學生進行合作,比如和生物學院的學生合作進行生物序列比對、識別等。這階段主要是擴展學生的眼界,培養(yǎng)學生的創(chuàng)新意識。
SE-D的內容主要是軟件設計與優(yōu)化。此階段要求學生能針對項目的需求分析進行設計,并且結合業(yè)界的先進技術,進行軟件架構設計及技術方案的創(chuàng)新設計及優(yōu)化。使學生所學習的資源遠遠超越了已有課程教學的內容,甚至跨越了專業(yè),體現了多樣性。讓學生自主學習人臉識別的技術、社交好友評價及識別系統(tǒng)等。由于學生結合了自己的興趣點,能有效地發(fā)揮自學習能力。教師在此階段不再是傳授的角色,更多的是輔助和指導的角色,指出方向的正確性和可行性。不少學生能針對待求解問題進行新技術的學習,并能利用學到的新技術提出可行的設計方案。本階段教師將基于搜索引擎對新項目進行查重,確認學生所選擇項目創(chuàng)意或使用技術上的新意。
SE-I的內容主要是軟件實現、集成與測試。此階段中學生需要對選定的技術方案進行設計與實現。往往此階段也是出錯最多的階段,除了核心技術問題外,運行環(huán)境的設置、接口的設置和調用也是失敗最多的地方。例如,在軟件的配置過程,往往出現由于版本不同而引導的問題,以及由于運行環(huán)境不同而導致的問題。在手機軟件的設計中,學生往往由于一些接口以及配置問題而陷入困境。由于學習的是新技術,很難從同學和教師身上獲得答案,所以老師要引導學生在國內外的技術論壇進行學習。學生的自學習和實踐能力在此階段將得到鍛煉。
SE-O的內容主要是軟件運用、維護、產業(yè)化、市場營銷,讓學生經歷工程中理論→技術→生產→應用的全過程。在此階段教師將引導學生了解軟件的成功不僅僅取決于其功能,事實上很多時候需要考慮非功能性需求,如用戶友好性、易用性、易維護性等。學生通過軟件的試運營,改善產品的界面設計,優(yōu)化軟件的使用方式,細化用戶需求,達到對前三階段的迭代及反饋式改進。在此階段,教師讓學生觀看有關營銷、管理及產品介紹的慕課資源,讓學生了解如何去主動接觸他人,如何了解客戶的需求。通過一流軟件公司如蘋果公司、微軟公司、GOOGLE公司的經營理論和產品介紹的慕課資源,讓學生了解公司的經營及相關產品發(fā)展。此階段教師還要求學生進行同一軟件的多版本比較,以及類似功能的不同軟件比較,通過這些比較讓學生了解產品設計思路的改變,以及公司的經營策略。比如通過微軟公司、蘋果公司不同時期的公司網頁和軟件產品,以及中外IT網頁和產品的比較,學生可了解業(yè)界的發(fā)展歷史和當前趨勢,讓學生了解軟件市場的熱點和趨勢。
5 改革考評方式(Reform the way of evaluation)
傳統(tǒng)教學和考核方式過于單一,實踐環(huán)節(jié)薄弱。為了滿足學分和教學體制的要求,學生必須按課程體系的要求進行相關學習,這影響了創(chuàng)新知識的傳授和接受。單一的考試方式不能全面的考查學生對知識的掌握,尤其是學生創(chuàng)新能力、知識應用能力,以及畢業(yè)后不斷更新知識的能力。學生只以通過考試為目標,缺乏學習的動力和持續(xù)性。本課程的考核實施過程控制,成績不完全由考試或大作業(yè)決定,還將包括考勤和學生在課堂上的演講、學生的自學習和團隊溝通能力、軟件創(chuàng)新能力等共同組成。學生參與的軟件競賽成績,以及參與的教師研究項目可計算入本課程的考核成績。
由于學科的快速發(fā)展及大量網絡資源的可獲取性,教師很難了解所有的相關文檔及源代碼的原創(chuàng)性。本課程依托學院實驗平臺上的自動化線上評量系統(tǒng),進行軟件查重。同時利用學生開發(fā)的系統(tǒng)對相關文檔進行查重,從而客觀、公正地對軟件作品進行評價。
6 結論(Conclusion)
軟件工程專業(yè)基于慕課和CDIO的混合方法進行課程教學,改革了創(chuàng)新課程。以慕課擴展教學資源,結合SE—CDIO應用實踐設計四階段的教學內容,進行學生創(chuàng)新能力的培養(yǎng),達到培養(yǎng)自學能力、創(chuàng)新能力、項目實踐能力的卓越工程師人才為目標。
參考文獻(References)
[1] Urman,Ingrid.Make the Most of MOOCs[J].Training.2017,
54(2):14-33.
[2] 陳澎,熊耀華,周慧.基于CDIO模式的軟件工程實踐教學課程建設的研究[J].軟件工程,2016(1):1-3.
[3] O.M.Zamyatina,et al.Analysis of Engineering Invention Competencies in Standards and Programmes of Engineering Universities[J].Procedia-Social and Behavioral Sciences,2015,171:1088-1096.
[4] Edstr?m,et al.PBL and CDIO: Complementary Models for Engineering Education Development[J].European Journal of Engineering Education,2014,39(5):539-555.
[5] 康雁,李彤.基于SE-CDIO培養(yǎng)學生項目管理能力的新途徑[J].計算機教育,2013(13):69-72.
作者簡介:
康 雁(1972-),女,博士,副教授.研究領域:軟件開發(fā),數據挖掘.
李 彤(1963-),男,博士,教授.研究領域:軟件工程,軟件過程.
張 璇(1978-),女,碩士,副教授.研究領域:軟件工程,信息安全.endprint