999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于開源和群智的軟件工程實踐教學方法

2020-07-14 16:36:42毛新軍
軟件導刊 2020年1期

摘 要:分析當前軟件工程課程實踐教學面臨的主要問題和挑戰,以培養“解決復雜工程問題能力”為目標,提出基于開源和群智的軟件工程實踐教學方法。設計了循序漸進的課程實踐框架,其核心思想是:要求學生開發上規模、有創意、高質量的軟件系統;通過學習、重用和改造開源軟件開展軟件工程課程實踐;借助開源社區中的群智知識解決課程實踐中遇到的具體問題。此外,介紹了支撐軟件工程實踐教學的軟件工程及教學案例資源。5年的教學實踐表明,實踐教學方法成效顯著,學生創新實踐能力,以及綜合運用知識和工具解決復雜工程問題的能力等得到了極大提升。

關鍵詞:軟件工程;開源軟件;群智;開源社區

DOI: 10. 11907/rjdk.192730

開放科學(資源服務)標識碼(OSID):

中圖分類號:TP434

文獻標識碼:A

文章編號:1672-7800( 2020)001-0001-06

0 引言

軟件工程課是一門“虛”“實”相結合、對實踐性要求非常高的課程。其“虛”的一面主要體現在,該課程關注的對象是軟件這一邏輯產品,課程知識點包含許多思想性和方法性的內容,要將這些抽象的知識點講清楚、讓學生聽明白具有挑戰性。如果照本宣科地講授,學生會覺得空洞乏味,很難理解軟件工程的內涵并掌握其要領,因而軟件工程課程教學普遍存在“不好教”、“不易學”的突出問題[1]。其“實”的一面主要體現在,軟件工程課程講授的是軟件開發的具體工程化方法,課程知識點包含許多具有經驗性、實用性的軟件開發技術,需要學生在具體實踐中加以領會并應用到軟件開發中。整體而言,實踐教學是軟件工程課程教學的核心和關鍵,如何通過實踐教學提升教學成效,讓學生領會軟件工程的內涵、掌握其知識點并能運用它們解決實際問題,進而積累軟件開發經驗,是軟件工程教育面臨的一項長期重大挑戰[2-3]。

提高工科學生的能力和素質是近年來新工科教育需要解決的主要問題[4]。軟件工程課程實踐教學并非簡單地讓學生完成一項軟件系統開發,而是通過課程實踐培養學生多方面的能力,尤其是“解決復雜工程問題的能力”,進一步提升學生的軟件工程素質。實際上,軟件工程課程非常適合培養學生“解決復雜工程問題的能力”,原因有二:一是軟件本身是一類極為復雜的系統;二是軟件開發需要綜合運用多種技術和工具、需要考慮和權衡多種因素,充分體現了復雜問題的解決過程。成功的軟件開發實踐需要解決諸多復雜工程問題,如滿足需求、確保質量、保證進度等。而要達到能力培養這一目標,就需要對課程實踐教學任務進行精心設計、對實踐成果提出明確要求、對實踐過程進行精細把控。顯然,這需要從源頭提高課程實踐中待開發軟件系統的規模和復雜性,讓學生在具體實踐中體驗由于規模和復雜性增長帶來的一系列工程問題,并在解決實際復雜工程問題的過程中逐步培養其能力和素質。

在軟件工程課程實踐教學過程中,學生對于教師布置的軟件工程實踐作業往往無從下手,課堂上似乎聽懂了,但一旦要具體開發一個軟件系統常常不知所措,通常面臨兩方面的主要問題。首先,學生在實踐過程中常常遇到超越教材和課堂的多樣化開發問題,許多問題教師也難以回答,使得課程實踐工作難以開展,影響學生完成實踐作業的信心和勇氣,許多學生不得不通過避重就輕、減少實踐內容、降低實踐難度等方式以求順利完成作業,教師對此狀況也只能“望而興嘆”“睜一只眼閉一只眼”。許多教師缺乏軟件開發實際經驗,沒有足夠的時間和精力指導學生開展實踐、解答學生遇到的問題,也無法為學生提供實踐所需的各種資源,常常覺得“心有余而力不足”。其次,軟件工程課程實踐中會有一些關鍵需求和功能模塊,它們需要綜合運用多種專門技術(從網絡編程、數據庫設計到智能數據分析)才能得以實現,因而是阻礙學生順利完成實踐的主要瓶頸。通常,軟件系統開發涉及諸多技術要素,除通用軟件工程技術外(如編程、設計、測試等),稍具規模和復雜性的軟件系統都會或多或少地涉及一些專用計算機技術(如圖像處理、模式識別、網絡通訊、數據分析等)。對于其中一些技術要素,學生可能并未掌握,或者將其應用到具體的軟件系統開發之中會有困難,進而阻礙關鍵軟件需求和軟件部件開發,影響課程實踐的順利完成。由于這兩方面問題的存在,軟件工程課程實踐常常是“虎頭蛇尾”、“草草了事”。學生提交實踐作業,教師給定實踐成績,隨后實踐教學就結束了,至于實踐做得好不好、對不對、效果如何、還存在哪些問題、應該如何解決等問題往往不得而知,最終導致軟件工程課程實踐教學流于形式、走走過場,難以達到預期效果。

為了改革軟件工程實踐教學方法,人們進行了諸多探索,如采用游戲化的手段[5]、借用MOOC教學[6]、引入協同學習方法[7]、也嘗試將開源項目引入到軟件工程教育中[8]。本文以培養“解決復雜工程問題能力”為目標,設計了軟件工程課程實踐的任務框架,明確了課程實踐的具體要求,提出了基于開源和群智的軟件工程實踐教學方法。

1 《軟件工程》課程實踐教學任務框架

如何針對教學目標設計一個科學、合理、可行的實踐任務是開展實踐教學的基礎和前提。軟件工程課程實踐任務設計不僅要服務于能力和素質培養這一目標,還要綜合考慮實際條件、前導課程、學生水平、技術狀況等因素。本文設計了包含兩項實踐任務、循序漸進的軟件工程課程實踐任務框架(見圖1),以達成課程實踐教學能力培養目標。

任務1:閱讀、分析和維護高質量的開源代碼。

該實踐要求學生:①閱讀高質量的開源代碼,理解代碼的語法語義和編程風格;②對開源代碼進行標注和注釋;③分析開源代碼質量,從多方面理解和領會高質量代碼的基本特征,掌握編寫高質量程序的基本技能和要領,包括編碼風格、軟件設計和程序設計方法等;④運用所學到的軟件開發技能和方法維護開源軟件,以增強和完善其功能,糾正開源代碼中的缺陷和錯誤,在此過程中將所學到的編程技巧、設計方法和代碼風格等應用到代碼維護中,做到“學以致用”,以確保維護質量,并在此過程中體會和感受軟件“質量”的重要性,理解“需求變化”和“代碼修改”對軟件質量的影響。

該實踐旨在通過對高質量開源代碼的學習,掌握高水平的軟件設計和程序設計技能,培養質量意識和良好的軟件工程素質。對于剛剛入門的學生而言,程序代碼的閱讀、分析和維護比軟件分析、設計和建模等工作更容易人手。該實踐任務既可以讓學生在程序代碼層次,從質量視角理解軟件工程的內涵,也可以讓學生掌握高水平的軟件開發技能和要領,并以此指導后續實踐任務的開展。因此,該實踐任務的引入在整個軟件工程課程實踐中起承上啟下作用,幫助學生循序漸進地開展實踐,作好技術儲備,積累一定軟件開發經驗。

為了達成該實踐任務的培養目標,需要對閱讀、分析和維護的開源代碼提出明確要求:①質量高,如代碼的軟件設計很好體現了軟件工程原則,程序模塊具有良好的獨立性和封裝性,代碼遵循編碼風格,具有良好的可理解性、可維護性、可擴展性等;②規模適中,規模太小,難以體驗代碼規模給軟件質量及軟件維護等帶來的影響,無法領會軟件工程在開發大規模軟件系統中的作用;規模太大,學生難以從整體上把握軟件系統的全局,沒有足夠的時間和精力完成閱讀、分析和維護工作。為此,建議待閱讀、分析和維護的開源代碼規模至少應具有5 000-10 000行的代碼量;③易于理解,所選擇的開源軟件盡可能來自于大家所熟知的應用領域(如辦公、家庭、公共服務等),其功能應具有直觀、易于理解的特點,學生容易建立起功能和代碼之間的關聯關系,并結合實際應用需求構想和增強其軟件功能;④用熟知的編程語言編寫,盡可能選擇那些用學生所熟知的程序設計語言所編寫的開源軟件;⑤開源社區活躍,盡可能地選擇那些在開源社區中仍然活躍的開源軟件,以便學生可以就該開源軟件的有關新特征、缺陷、版本等在社區中進行交互和協同,分享社區中軟件開發者群體的軟件開發經驗和知識。

任務2:開發有創意、上規模和高質量的軟件。

該實踐任務要求學生運用軟件工程的思想、方法、技術和工具開發一個有創意、上規模和高質量的軟件系統,在此過程中積累軟件工程經驗,逐步培養和提升軟件開發能力,尤其是解決復雜工程問題的能力。

為了達成實踐教學目標,對軟件系統開發規模、質量等提出明確要求:①規模性,待開發的軟件系統必須具備一定規模,才能讓學生領悟軟件工程中的“工程”要素并運用工程化的手段解決復雜問題。一般而言,要求學生以團隊為單位開發出具有至少10 000行以上程序代碼的軟件系統;②綜合性,軟件系統開發需要綜合運用多方面的技術、語言和工具等;③集成性,待開發軟件系統需要與各種遺留系統、機器人、無人設備、智能終端、互聯網云服務等進行交互,從而解決實際問題;④高質量,所開發的軟件系統必須具有良好的質量屬性,如規范性、正確性、可維護性等,從而表現出良好的軟件工程素質;⑤創意性,所開發的軟件系統需要在待解決問題以及解決問題的方法等方面具有創意,以加強創新意識和能力培養,同時激發學生的實踐熱情和激情。

2 基于開源與群智的實踐教學方法

達成上述實踐教學目標,無論對于教師還是學生而言都是一項極具挑戰性的工作。通過分析可以發現,軟件工程實踐教學方法自身存在諸多局限性,難以有效支撐上述培養目標的實現。首先,施教方法落后,具體表現為施教對象的封閉性、輔助渠道的單一性、提供資源的有限性等,學生主要依靠教師和教輔解決實踐中遇到的困難和問題。實踐的成功高度依賴于教師和教輔的決心、投入、經驗和水平。今年成功并不意味著明年成功,難以重復和復制。其次,實踐教學諸多假設的不合理性,比如要求針對熟知的問題或給定明確的軟件需求完成軟件開發,認為實踐所需的技術等不能超出學生已學課程的知識范疇,要求學生采用全新的方式開發軟件系統的所有代碼,以及期望學生一次性地完成軟件開發實踐等。這些假設嚴重束縛了實踐的開展和實施,沒有為學生提供改進的機會和空間。

近年來,移動互聯網帶動了群體智能的應用及發展,其特點是利用互聯網上的海量人群及其智慧解決各類問題,成功的案例包括基于眾籌眾智的萬眾創新、基于眾包眾享的共享經濟、基于大眾開發的開源軟件等。這給開展軟件工程實踐教學改革提供了啟發:在軟件工程課程實踐教學中,僅靠教師的力量無法從根本上解決實踐教學中的基礎性問題,可以嘗試將互聯網大眾的力量引入到課程實踐環節,讓那些高水平的軟件工程師成為指導學生的“教師”,幫助學生解決實踐中遇到的各類問題;并且,開源軟件技術及實踐在IT學術界和產業界得到了廣泛應用,產生了重要影響,建設開源生態、借助開源軟件實現軟件開發已成為諸多IT企業的共識,包括Coogle、IBM、華為甚至微軟等。這給開展軟件工程實踐教學改革提供了啟發:靠學生自己獨立開發出軟件系統的所有程序代碼,既無必要也不現實,重用和集成開源軟件完成軟件開發是一種有效的工程方法和手段,應該鼓勵學生通過重用開源軟件完成課程實踐任務。概括起來,基于開源和群智的軟件工程實踐教學方法本質就是要借助于互聯網上的海量群體以及開源軟件幫助學生開展軟件工程課程實踐。它不僅可以有效克服現行方法的不足,還可以幫助學生有效解決實踐中遇到的問題。該方法基本思想描述如下:

(1)鼓勵學生借助開源軟件開發軟件。在軟件工程課程實踐過程中,學生可能會構思一些較為復雜、有技術難度的軟件需求,這些需求的實現需要用到超出課程和教材的專業知識(如語音識別、圖像識別、機器人控制、智能手機通信等),所需軟件開發技術(如數據庫設計)可能還未開始講授,掌握實現需求的開發技術(如將語音轉換為文字、將視頻和語音信息從一臺計算機傳輸到用戶手機上)對學生而言有難度。在這種情況下,課程實踐鼓勵學生到開源軟件社區去尋找開源軟件,以實現課程實踐中那些學生所不能或者難以實現的軟件需求。學生可訪問諸如Cithub( https: //github.com/) 、SourceForge( https: //source-forge.net/)、碼云(https://gitee.com/)等開源軟件托管網站,結合實際需求找尋相應的開源軟件,通過對開源軟件的理解,對其進行重用,集成到課程實踐的軟件系統中,從而實現目標軟件系統的關鍵需求。開源軟件托管平臺(如Github)匯聚了海量的開源軟件項目(如僅Github就有8000萬個軟件版本庫),足以提供相應的開源代碼幫助學生實現各類軟件需求。無疑,重用開源軟件或其代碼片段可以幫助學生有效解決課程實踐中“不知道如何做、不會做”等問題。例如,假設學生所構思的軟件系統中有一項關鍵需求,要求將機器人所獲取的語音信息傳送到遠端的用戶手機上。這一功能需求的實現對專有技術要求很高,開發起來有難度,為此學生可以到Cithub中尋找相關開源項目,利用“Linphone4Android”開源軟件就可以實現該軟件需求。

(2)要求學生到開源社區尋求問題解決。在軟件工程課程實踐過程中,學生會遇到大量、多樣化和個性化的軟件開發問題。這些問題覆蓋編程語言、開發技能、基礎平臺、代碼調試、工具使用等方方面面,涉及語言使用、缺陷定位、數據庫設計、網絡編程等諸多環節。顯然,讓教師和教輔幫助學生解決這些問題是不現實的。在這種情況下,課程實踐要求學生到軟件開發知識分享社區中尋找這些問題的答案,以解決問題。學生可訪問諸如Stack Overflow( https://stackoverflow.com/)、開源中國(http://www.oschlna.net/)、CSDN( https://www.csdn.net/)等軟件開發知識分享社區,針對其遇到的問題搜尋相關回答,從而解決這些問題。一些軟件開發知識分享社區(如Stack Overflow)擁有幾千萬軟件開發者以及近億條知識問答條目,足以幫助學生解答實踐中遇到的各種問題。學生在實踐中遇到的95%以上的問題都可以在上述社區中找到相應答案。對于那些找不到滿意答案的問題,學生可以在相關社區中提問,以尋求社區用戶的回答。無疑,到開源社區尋求問題解決方法可以幫助學生有效解決課程實踐中遇到的各類問題,從根本上解決“有問題找不到解答、獲得幫助的渠道有限、無法獲得有效指導”等問題。例如,假設學生在實踐中不知道“如何用Java訪問MySQL數據庫”。針對這一問題,學生可以訪問Stack Overflow網站,在查詢框中輸入“access MySQL database in Java”,系統將返回大約500個與此問題相關的回答。Stack Overflow還進一步描述了這些回答的詳細信息,如提出者是誰、問題提出時間、提供回答數目、用戶點贊情況等,學生可以進一步點擊相關超鏈獲得具體回答信息。

3 實踐教學支撐軟件工具及教學案例資源

基于開源和群智的軟件工程課程實踐需要借助一系列的支撐軟件工具,以幫助教師和學生有效和高效地開展課程實踐,搜尋和利用開源軟件和群智知識,跟蹤實踐進展情況,開展問題解答和知識分享,具體包括:分布式協同開發平臺Trustie-Forge、開源軟件檢索和分析平臺Trust-ie-OSSEAN、開源代碼閱讀和標注工具Trustie-Codepedia、群體化學習工具LearnerHub等。

3.1 實踐任務管理與協同開發工具Trustie-Forge

Trustie-Forge部署在互聯網上,URL是http://course.trustie.net。它為軟件工程課程實踐開展提供了任務布置、人員組織、團隊組建、項目創建、成果提交、協同軟件開發等一系列功能和服務(見圖2)。

(1)人員組織和管理。支持對參與課程實踐的各類人員(包括教師、教輔和學生等)進行組織和管理,包括注冊、登錄、退出和關聯。經過注冊后的用戶可以登錄到系統中,并根據所扮演的角色(如教師、教輔、學生等)操作相應功能。

(2)實踐任務布置和管理。允許教師在課程中發布實踐任務,支持學生采用兩種方式提交實踐成果:以文件方式提交和以版本庫的形式提交。Tru stie- Forge能夠搜集實踐人員的實踐活動信息(如提交代碼、合并代碼等),掌握實踐開展動態情況,并及時將這些信息告知給相關實踐人員。

(3)實踐軟件項目托管與協同開發。針對軟件工程課程實踐特點和要求,提供實踐軟件項目托管服務,支持實踐人員之間的分布式協同開發,具體包括:開發任務分配和跟蹤、實踐成果匯聚和合并、實踐成果版本管理、實踐成果質量分析等。

(4)實踐信息采集和分析。搜集實踐人員參與實踐、開展軟件開發工作等方面的信息,包括實踐投入時間、發布的資源和帖子及回復帖子數量和質量、作業提交次數等。基于這些實踐數據,Trustie-Forge可以從實踐人員個體和項目團隊兩個層次,分析他們的實踐活躍度、開發貢獻度(如提交的程序代碼行數量)、實踐成果提交質量(如程序代碼的質量等級)等,并依此對不同的軟件開發者個體、項目團隊進行排名。

3.2 代碼閱讀與標注工具Trustie-Codepedia

Trustie-Codepedia部署在互聯網上,URL是http:llcodepedia.trustie.net,可為軟件工程課程實踐提供代碼加載、閱讀、標注、質量分析等功能和服務(見圖3)。

(1)代碼閱讀和注釋。Trustie-Codepedia支持將開源軟件代碼加載到工具中,構建面向閱讀和標注的開源軟件資源庫,并為代碼閱讀和標注提供軟件系統的總體結構、類與方法、方法間調用關系等方面的視圖信息,以加強對開源軟件項目的理解和認知。在此基礎上,工具提供了代碼獨立標注的功能,實踐人員可以針對任何一行代碼或者一個代碼庫等進行標注。工具還集成了代碼分析工具,并基于分析結果形成相應的引導問題,引導和培養學生編寫高質量代碼的意識。

(2)標注質量分析和評估。實踐人員對代碼理解是否準確和正確、標注質量如何等,僅靠教師評估非常困難。Trustie-Codepedia工具提供了多種功能和服務以加強對標注質量的分析和評估。工具支持實踐人員查看他人給出的代碼注釋,以幫助其更好地理解代碼的語義。工具還提供了贊與踩、匿名評論、交叉互評等功能,通過學生間的相互評閱,利用機器學習和自然語言處理技術對標注進行分析,從而對學生代碼注釋質量進行科學分析和準確評估。

3.3 軟件開發知識與開源軟件檢索工具Trustie-Ossean

Trustie- Ossean部署在互聯網上,其URL是http://os-sean.trustie.net,可為實踐人員提供群智資源檢索和獲取服務,包括開源軟件項目、軟件開發知識問答、技術博客等,幫助實踐人員解決實踐中遇到的多樣化和個性化問題,重用開源軟件,促進軟件系統開發。

(1)檢索和獲取開源軟件資源。互聯網上開源軟件托管社區(如CitHub、Sourceforge、碼云等)匯聚了海量針對不同應用和需求的開源軟件資源。Trustie-Ossean通過爬取這些開源軟件托管社區,建立起面向實踐教學的大規模開源軟件資源庫。軟件開發人員可以通過查詢獲取所需開源軟件,進而支持軟件系統開發。

(2)檢索和獲取軟件開發知識。互聯網上開源社區(如Stack Oveflow、CSDN、開源中國等)匯聚了有不同軟件開發人員所提供的多樣化軟件開發知識(包括知識問答、技術博客等等)。它們既是對眾多軟件開發經驗的總結,也提供了針對不同軟件開發問題的常見解決方法。Trust-ie-Ossean通過與開源社區內容同步等技術手段,建立起面向軟件工程課程實踐教學的大規模軟件開發知識庫。軟件開發人員通過查詢方式獲取和共享相應的軟件開發知識,從而幫助他們解決實踐中遇到的困難和問題。

3.4 群體化學習工具LearnerHub

LearnerHub(也稱知士薈)部署在互聯網上,其網址是http://www.learnerhub.net/,它可以幫助實踐人員圍繞特定的主題(如軟件工程、軟件開發等)開展學習、交流、討論和分享。它采用在線社區的模式組織學習者,使得他們通過互聯網分享學習資源(如學習資料、技術博客、開發經驗等)和知識。

(1)基于項目的群體化學習。LearnerHub支持學習者圍繞學習項目開展群體化學習,如創建學習資源、貢獻學習資源、提出問題、回答問題、投票回答等,進而支持互聯網大眾圍繞特定的主題開展自主化學習。LearnerHub允許用戶自由地創建學習項目(如軟件工程綜合實踐),接受互聯網用戶加人到學習項目中開展群體化學習。

(2)基于群組的學習者管理。LearnerHub采用學習群組機制組織和管理學習者,它允許用戶創建群組(如軟件工程課程實踐的學生群)并通過群組匯聚具有共同學習目標和興趣的學習者。互聯網用戶可以根據自己的興趣和意愿自由地加入到相應的學習群組之中。群組中的用戶可以創建學習項目,從而使得群組中的成員可以圍繞學習項目開展群體化學習。LearnerHub允許一個群組創建一個或者多個學習項目,也可以在一個群組中創建一個或多個子群組。群組中的管理者(也稱群主)擁有對群組及其所關聯的學習項目的管理權限。加入群組后,群組中的成員可以跟隨群主的學習路徑和計劃一起開展學習,也可以結合各自學習需求在相關學習項目中進行交流和分享。

3.5 開源社區

軟件開發是一個知識密集型的活動,高效的知識獲取、分享和傳播可有效地促進軟件開發。目前,典型的軟件開發知識分享社區包括編程問答社區、技術資訊社區等。

(1)編程知識問答社區及Stack Overflow。編程知識問答社區主要圍繞編程過程中遇到的問題進行問題發布、回答、評論、搜索等活動。Stack Overflow是一個面向編程人員群體的垂直問答網站,也是目前最活躍、最具影響力的軟件開發知識問答社區,問題主題非常寬泛,涉及Web開發、數據管理、安全、編程實踐等方方面面,涵蓋Android、iOS、Eclipse等軟件開發平臺,包括C++、Java、Python、Ruby等各種編程語言及技術。

(2)技術資訊社區及CSDN。技術資訊主要圍繞特定的編程開發技術,供軟件開發人員發布其開發和實踐經驗、使用體驗等,供相關人員開展交流和討論。同時,社區還可以圍繞特定的開源項目或者開源技術,發布相關開源產品的最新信息等,典型技術資訊社區的代表是CSDN。CSDN是創立于1999年的中國IT社區和服務平臺,為軟件開發人員和IT從業者提供知識傳播、職業發展、軟件開發等服務。在CSDN中,用戶可以了解最新IT技術資訊,學習和發布技術博客。

3.6 實踐教學案例及資源

為了支撐基于開源和群智的軟件工程實踐教學及改革,本文以“空巢老人智能看護系統”為案例,提供了豐富的實踐教學資源,具體包括:軟件文檔及模板、分析和設計的UML模型、高質量的程序代碼、實踐總結材料(包括軟件產品宣傳材料、演示視頻和匯報PPT等)。

案例資源可在LearnerHub工具中的學習空間“軟件工程課程實踐教學及改革(教師)”(見圖5)中獲得。教材[1]結合軟件工程實踐內容詳細闡述了案例細節。

4 實踐成效分析

基于上述實踐教學方法,課題組在國防科技大學計算機學院開展了為期5年的軟件工程實踐教學改革與探索,成效顯著,具體表現為以下幾個方面:

(1)創意性。學生構思并開發了許多有創意和特色的軟件系統,如無人值守的圖書館信息系統、空巢老人智能看護系統、物流寶、多無人機聯合搜尋系統等。這些課程實踐成果先后獲得計算機作品賽、科技創新比賽、創新創業賽、網絡技術挑戰賽等的特等獎、一二等獎、金銀獎共計18項。

(2)規模性。課程實踐所開發的軟件系統代碼行數量絕大部分超過15 000+LOC。這意味著課程實踐中的軟件系統具有一定的規模性和復雜度,學生通過該實踐可以在一定程度上感受復雜系統開發的常見問題,體會和踐行軟件工程的基本原則和思想。

(3)集成性。課程實踐中的絕大部分軟件項目嘗試將軟件系統與智能手機、機器人、無人系統、互聯網云服務等系統和設備集成在一起,以解決實際問題,并尋求創新。所開發的軟件系統大多是分布式、異構的人機物融合系統。

(4)綜合性。課程實踐中幾乎所有的軟件項目都綜合運用多種軟件開發技術、工具、語言和平臺,一些軟件系統包含有多個不同的異構軟部件,運行在不同的計算平臺上(如機器人、智能手機等計算設備、Linux和Android操作系統等),采用多種編程語言實現(如C++、Java和Python),以滿足軟件系統在不同平臺上的開發、部署和運行需要。

(5)高質量。學生在課程實踐中提交了多樣化的軟件制品,包括軟件模型、文檔、程序代碼等。通過對這些軟件制品的質量分析可以發現,學生提交的軟件系統具有較高的質量,具體表現為UML模型表達準確,軟件文檔規范且文字表述較為簡潔和嚴謹、可讀性較好,程序代碼遵循編碼風格且具有較好的可理解性、可維護性等。

5 結語

軟件工程課是一門很難講好、教好和學好的專業課程,其實踐教學環節尤為關鍵。軟件工程課程實踐教學常常面臨著學生“做不了、做不出、做不好”,教師“缺乏工程經驗、沒有足夠精力指導學生和解答問題”等突出問題,使得實踐教學流于形式。出現這種狀況的原因是多方面的,既有軟件工程課程實踐的特殊性,也有現行實踐教學方法的局限性。本文提出從培養“解決復雜工程問題能力”的高度確立軟件工程課程實踐教學目標,為此設計了支撐這一目標的實踐任務框架,對實踐任務的規模性、創新性、集成性、綜合性和高質量等提出明確要求。為了達成這一實踐教學目標,解決實踐教學中的突出問題,應對挑戰,本文提出了基于開源和群智的方法,其核心思想是學習開源軟件中的成功經驗、鼓勵學生借助開源軟件完成軟件開發、要求學生到開源社區尋求問題的答案。

基于上述方法,課題組進行了5年的改革和探索,成效顯著。整體而言,通過軟件工程實踐,學生創新實踐能力以及綜合運用知識和工具解決復雜工程問題的能力等得到了極大提升。詳細的實踐實施方法可以參見相關教材[1],支撐平臺LearnerHub( www.learnerhub.net)匯聚了教學改革的具體成果,包括:課件、模型、文檔、代碼、數據、工具等。

參考文獻:

[1] 毛新軍,王濤,余躍.軟件工程實踐教程:基于開源和群智的方法[M].北京:高等教育出版社,2019.

[2]SHAW M.Software engineering education:a roadmap[Cl. ICSE-Fu-ture of SE Track, 2000: 371-380.

[3]ARDIS M,FORD G.SEI report on graduate software engineering edu-cation[C].SEI Conference on SoftWare Engineering Education, 1989:208-249.

[4]林健.面向未來的中國新工科建設[J].清華大學教育研究,2017,38(2):26-35.

[5] ALHAMMAD M M,MORENO A M.Gamification in software engineer-ing education:a systematic mapping[Jl. Journal of Systems and Soft-ware.2018, 141: 131-150.

[6] FASSBINDER A G D 0,FASSBINDER M,BARBOSA E F,et al.Mas-sive open online courses in software engineering education[C].IEEEFrontiers in Education Conference. 2017: 1-10.

[7]NEILL C J,DEFRANCO J F,SANGWAN R S.Improving collabora-tive learning in online software engineering education [J]. EuropeanJournal of Engineering Education, 2016, 41(3):1-12.

[8] PAPADOPOULOS P M,STAMELOS I G,MEISZNER A.Enhancingsoftware engineering education through open source projects: Fouryears of students' perspectives[J].Education and Information Tech-nologies, 2013, 18(2):381-397.

(責任編輯:孫娟)

基金項目:科技部重點研發計劃項目( 2018YFB1004202);國家自然科學基金重點項目(61532004)

作者簡介:毛新軍(1970-),男,博士,國防科技大學計算機學院教授,研究方向為軟件工程方向的教學教改、人才培養。

主站蜘蛛池模板: 亚洲中文字幕日产无码2021| 欧美亚洲日韩不卡在线在线观看| 依依成人精品无v国产| 亚洲网综合| 亚洲,国产,日韩,综合一区| 日本高清成本人视频一区| 国产精品第一区| 国产成人三级在线观看视频| 亚洲中文精品久久久久久不卡| 亚洲第一区在线| 色噜噜在线观看| 在线一级毛片| 国产成人精品2021欧美日韩| 成年人午夜免费视频| 在线视频一区二区三区不卡| 亚洲综合极品香蕉久久网| 国产女人爽到高潮的免费视频| 亚洲中文制服丝袜欧美精品| 久久精品电影| 国产丰满大乳无码免费播放| 国产在线拍偷自揄拍精品| 国产99视频免费精品是看6| 操操操综合网| 精品国产美女福到在线不卡f| 日本人妻一区二区三区不卡影院| 激情六月丁香婷婷| www.91中文字幕| 欧美日韩国产精品综合| 9cao视频精品| 国产精品成人啪精品视频| 午夜毛片免费观看视频 | 日韩亚洲高清一区二区| 久久久久久久久18禁秘| 成人在线天堂| 特级毛片免费视频| 午夜福利网址| 欧美精品色视频| 国产不卡一级毛片视频| 国产网站在线看| 97亚洲色综久久精品| 欧美精品色视频| 国产国拍精品视频免费看| 在线精品欧美日韩| 国产区人妖精品人妖精品视频| 天堂在线视频精品| 亚洲欧洲综合| 亚洲无码日韩一区| 2020国产精品视频| 日本高清有码人妻| 国产激爽大片在线播放| 狠狠色香婷婷久久亚洲精品| 国产浮力第一页永久地址 | 精品国产www| 国产网站黄| 波多野结衣中文字幕一区| 国产人前露出系列视频| 日韩在线欧美在线| 黄色污网站在线观看| 亚洲第一成网站| 国产成人高清精品免费5388| 91无码国产视频| 亚洲色图欧美视频| 九九这里只有精品视频| 好紧太爽了视频免费无码| 永久在线精品免费视频观看| 欧美精品导航| 国产白浆视频| 国产亚洲男人的天堂在线观看 | 欧美特级AAAAAA视频免费观看| 亚洲a级毛片| 五月婷婷精品| 无码福利视频| 国产真实自在自线免费精品| 国产区在线看| 久久国产av麻豆| 亚洲视频a| 欧美亚洲一二三区| 亚洲精品天堂在线观看| 呦女精品网站| 男人的天堂久久精品激情| 欧美v在线| 天天干伊人|