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

以軟件構造為中心的軟件工程實踐化教學探索

2021-06-25 14:17:50
軟件導刊 2021年6期
關鍵詞:能力課程設計

彭 鑫

(復旦大學 軟件學院,上海 200438)

0 引言

軟件工程是一門實踐性很強的課程,課程實踐對于鞏固課堂教學成果、培養學生軟件工程能力具有重要作用,因此實踐化教學已成為軟件工程課程建設的一個基本方向[1-4]。本文所討論的軟件工程課程是指軟件工程概論課程,一般會作為軟件工程或計算機專業本科生基礎課在大學二年級或三年級開設,從而為軟件需求、軟件設計、軟件測試等后續專業課程學習打下基礎。例如,復旦大學軟件學院的軟件工程課程在大二下學期開設,后續還開設了多門軟件工程專業課程以及軟件實踐課程。因此,這類概論性質的軟件工程課程實踐教學的主要目的是通過實踐鞏固與加深對課程內容的理解,同時初步培養學生的軟件工程能力。在此基礎上,可在高年級專門開設綜合性的軟件實踐課程,并突出規模性、綜合性、集成性、創新性等方面的實踐要求[2]。

軟件工程課程實踐應當貼近工業界的軟件開發實踐,以一種迭代化的方式開展。通過多次迭代的系統理解、分析、糾錯、改進等演化式的開發活動,不僅可增強學生的代碼理解、修改等軟件開發實踐能力,還可強化對其軟件設計準則、編碼和文檔習慣以及軟件測試能力的培養[5]。考慮到授課對象的專業基礎及可接受性,本文在軟件工程課程教學與實踐中采用以軟件構造活動為中心的思想。軟件構造是指通過將編碼、驗證、單元測試、集成測試及調試相結合,具體創建可運行的軟件的過程[6]。作為剛經過1~2 年專業學習、初步掌握編程能力的本科生而言,軟件構造活動所覆蓋的軟件工程專業知識及能力是其最容易理解與接受的學習內容。以軟件設計為例,其中包含兩個層次[6]:體系結構設計關注軟件頂層結構和組織,以及識別各種可用組件;詳細設計關注為每個組件(或模塊)提供足夠的細節以支持軟件構造。在這兩個層次中,體系結構設計通常在大規模、分布式軟件系統開發中有較多考慮,但在此階段的學生由于缺乏所需專業知識和軟件開發經驗,一般很難理解體系結構設計。屬于軟件構造活動一部分的詳細設計則建立在面向對象設計等更貼近編碼開發能力的基礎上,比較適合在軟件工程課程中進行介紹與實踐。此外,課程設計還充分考慮了軟件工程師成長路徑,按照局部編碼、詳細設計、總體設計、需求分析與測試的順序逐步開展課程教學與實踐。

按照以上指導思想,本文設計了軟件工程課程教學及配套實踐內容,在復旦大學軟件學院開展課程教學,并依托華為軟件開發云DevCloud 平臺[7]開展實踐教學,取得了良好效果。

1 課程教學及實踐安排

根據軟件工程實踐化教學的需要,同時考慮修讀本課程學生的專業基礎及可接受度,本文確定了以下3 條課程教學內容安排基本原則:

(1)以軟件構造活動為中心。以詳細設計、編碼、單元測試等軟件構造活動以及與之密切相關的版本管理等協作支持能力為中心,強調本科生可深入理解并切實掌握的軟件工程能力。

(2)突出實踐化培養特色。通過課程實踐項目加強學生對相關知識的理解、鍛煉對應的軟件工程能力,課程教學內容及進度安排配合實踐項目進展過程。

(3)體現軟件工程師成長路徑。課程教學內容安排體現企業中軟件工程師的成長路徑,按照局部編碼、詳細設計、總體設計、需求分析與測試的順序逐步培養學生的軟件工程能力,同時穿插版本管理和配置管理等團隊協作能力培養。

根據以上原則,本文設計了課程相關教學模塊及實踐內容。

1.1 課程教學模塊設計

課程教學內容模塊及其教學順序如表1 所示。軟件工程概述部分為學生提供了一個關于軟件工程思想及其基本內容的概覽,為其理解后續學習內容提供一個基本的上下文知識背景。后續學習過程從個人開發技能和必要的軟件過程與團隊協作能力開始,逐步展開軟件設計、軟件需求、軟件測試等教學內容。其中,個人開發技能和軟件設計兩部分中與軟件構造密切相關的內容是教學重點,屬于學生較容易接受并掌握的基礎開發能力。各個課程教學模塊都需要與課程實踐及相應的軟件開發環境和工具相結合,突出各部分的實踐要點。

Table 1 Modules of software engineering course表1 軟件工程課程模塊

1.2 課程實踐內容設計

課程的重點教學內容需要通過課程實踐讓學生進行體驗與鞏固。為此,本文設計了配套的課程實踐項目。除第一次的體驗性實驗外,整個實踐項目都是圍繞一個開發項目(如“在線論文投稿系統”)要求,以一種小組協作和迭代化的方式開展。教學側重點從編碼能力、設計能力到分析能力逐步進階,同時伴隨著軟件需求逐步增加與變更。實踐項目依托華為軟件開發云DevCloud 平臺進行,可實現整個軟件開發與協作過程全程留痕,幫助學生更完整與系統地理解工程化軟件開發,同時為課程項目評分提供依據。課程實踐項目以4 人為一組,設置組長1 名,根據交付及完成情況進行整體評估打分,期末再通過組內協商或互評將實踐項目評分分解到人。整個課程實踐項目分階段安排如下,其中針對卓越工程師班的特殊要求需單獨注明。

階段1(個人任務):熟悉DevCloud 及Git 版本庫,在事先準備好的Web 項目內容基礎上通過fork 操作建立自己的代碼倉庫,利用Maven 完成項目構建,并在華為云上進行在線部署。

階段2(小組任務—初始項目開發):利用Spring Boot +Vue 實現一個在線論文投稿系統的注冊、登錄以及會議申請等基本功能,并在華為云上進行部署;要求使用Dev-Cloud 的需求規劃、工作分配以及代碼質量檢查功能,確保功能實現的正確性和完整性,同時注重版本提交等開發過程的規范性。

階段3(小組任務—代碼質量):實現系統中的會議申請與管理等相關功能;實踐單元測試,要求項目中的代碼測試覆蓋率不低于80%;提升代碼質量,要求使用DevCloud代碼質量檢查工具進行代碼質量檢查,并解決檢查中暴露出來的代碼質量問題。

階段4(小組任務—設計與持續集成):完成系統的稿件分配與審稿功能,回顧并檢視軟件設計質量,進行必要的重構與改進;為提交的代碼打標簽(如按照每次迭代后實現的功能打標簽),根據標簽實現選擇性地編譯構建;利用華為云平臺構建CI/CD 流水線,嘗試持續集成、持續交付與持續部署(卓越班要求)。

階段5(小組任務—需求分析與測試):完成系統中的會議評審意見答復(rebuttal)與論文錄用相關功能;開展需求分析,檢視此前軟件實現中的需求完備性和準確性;在單元測試的基礎上實踐集成測試;結合DevCloud 和Sonar-Qube 的代碼檢測能力進一步改善代碼質量;進一步完善CI/CD 流水線,使每個任務的健康度都達到四星及以上(卓越班要求)。

以上課程實踐項目安排通過迭代化的方式逐步完善項目各項功能,每個階段結束后都有可交付、可運行的軟件版本。這種演化式的開發過程更有利于學生理解真實的軟件開發過程,同時對軟件代碼和設計質量等方面要求有更深刻的理解與體會。與此同時,在每個課程項目階段中都加入與課程教學內容相對應的實踐要求。例如,第2階段在完成初始項目功能開發的基礎上,要求學生利用DevCloud 的代碼質量檢查功能發現代碼質量問題并進行修復,同時建立基本的版本提交規范;第3 階段在增量需求開發的基礎上,進一步要求學生實踐單元測試并解決大部分代碼質量問題。此外,整個課程實踐項目過程都貫穿了對軟件設計能力和團隊協作能力的要求:通過迭代化和演化式的開發過程讓學生體驗軟件設計(特別是模塊化設計)質量對軟件持續演化與擴展能力的支持;持續的小組任務要求學生在項目中考慮前后端分離、模塊劃分、接口定義等設計問題,同時建立有效的分工協調、進度管理、交流討論、版本分支與合并、集成與測試、構建與部署等團隊協作機制。

2 實踐教學效果

采用上述實踐化教學方式在復旦大學軟件學院開展本科軟件工程教學取得了良好效果。學生普遍反饋課程實踐項目對其有一定壓力,但對于理解軟件工程理論及培養工程化開發能力有很大幫助。

2.1 實踐中存在的問題

在課程實踐項目的每個階段,都會對各小組交付情況進行評估,并通過課堂交流的方式邀請一些小組進行分享。通過該過程也發現了學生在課程實踐中的一些問題,主要包括以下幾個方面:

(1)邏輯不嚴密、測試不充分。對輸入的合法性檢查不夠,例如密碼長度限制檢查、必填數據項的非空檢查等;未使用登錄攔截器,可在未登錄狀態下直接使用URL 訪問特定頁面。

(2)代碼提交不規范。一些小組提交頻率過低,僅在項目開始和結束時各進行了一次提交;一些版本提交的粒度過大或邏輯不完整,對提交消息的描述也不夠準確;有些小組的代碼提交說明內容非常隨意,缺乏可讀性(如圖1所示,其中第一列和第二列分別是代碼提交ID 和提交說明)。

Fig.1 Examples of nonstandard code submission message圖1 不規范的代碼提交消息示例

(3)缺少必要的分支管理。一些小組成員在各自分支上進行開發,主分支合并較晚,因而導致較多沖突,修復負擔較重。

(4)代碼質量存在問題。典型的代碼質量問題包括代碼重復率和圈復雜度過高、標識符命名不規范、方法參數過多、在發布版本中包含alert 語句、不合理的代碼重復等。

(5)用戶界面不友好。界面上存在一些對用戶不友好的情況,例如點擊按鈕后系統沒有任何提示、執行操作后無法看到操作結果、一些重要信息無處查看等。

(6)前后端分離及模塊劃分不佳。一些小組沒有意識到在前后端分離及模塊化開發過程中建立接口契約的重要性,出現了模塊實現未按照契約編寫的情況,導致小組項目集成時問題較多,拖慢了開發進度。

2.2 進一步的實踐探索

大部分小組通過階段性反饋意識到相關問題后都進行了改進,最終大部分小組不僅圓滿完成了各項基本要求,而且還在多個方面進行了一些有意義甚至創造性的實踐探索,具體包括以下幾個方面:

(1)需求規劃和任務交流。使用DevCloud 進行需求分解與開發任務規劃,在此基礎上通過視頻會議或即時通信討論組的方式進行溝通討論及結對開發,通過共享文檔的方式約定開發接口、記錄會議紀要以及協作完成實驗報告。

(2)設計思維和體系結構理解。在前后端分離的基礎上,明確定義了后端接口及其契約,同時給出了包含后端模塊劃分及前端Web 組件結構的完整設計方案,在設計方案基礎上進行開發任務分配與協同。

(3)演化式設計與軟件重構。在迭代化的開發過程中不斷評估設計方案的不足,據此對代碼進行整理與重構,從而完善設計方案。

(4)分支策略和開發協作。制定適合團隊開發模式的分支策略,例如將主分支、特性分支、開發分支進行分離,建立規范化的代碼分支(branching)與合并(merging)實踐模式,保持主干清晰,及時提交并解決代碼沖突;規范版本提交過程,采用規范化的模板,并按照新增特性、缺陷修復、重構改進等不同目的編寫提交消息。

(5)高質量編碼。建立良好的代碼注釋風格;充分體現防御式編程,在前端輸入驗證的基礎上,后端代碼也進行輸入值的合法性驗證,并在發現問題時拋出異常;充分利用DevCloud 的代碼質量檢查工具對前后端代碼進行全面掃描,根據檢查結果改進代碼質量;開展代碼評審實踐,在發現代碼缺陷的同時,也促進了組員對代碼的理解與共享。

(6)軟件測試。初步建立測試驅動開發實踐,通過JUnit 工具編寫測試用例,對類或方法進行單元測試,并保證一定的代碼覆蓋率;采用Web 自動化測試方法,通過大量測試用例的自動運行保證后臺接口質量。

3 結語

課程實踐是軟件工程課程的重要組成部分,也是幫助學生理解與鞏固課堂教學內容、培養軟件工程能力的重要支撐。以軟件構造活動為中心并依托基于云的軟件開發平臺,使得軟件工程實踐教學的開展更加契合修讀軟件工程概論課程本科生的專業基礎和接受能力,引導其逐步理解與接受軟件工程的思想、方法及相關的工程師文化。今后還將結合翻轉課堂思想,加強課堂教學的互動性和研討性,同時進一步打通課堂理論教學與課程實踐相關內容,繼續推進軟件工程的實踐化教學之路。

猜你喜歡
能力課程設計
消防安全四個能力
數字圖像處理課程混合式教學改革與探索
軟件設計與開發實踐課程探索與實踐
計算機教育(2020年5期)2020-07-24 08:53:38
為什么要學習HAA課程?
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
大興學習之風 提升履職能力
人大建設(2018年6期)2018-08-16 07:23:10
你的換位思考能力如何
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
抄能力
主站蜘蛛池模板: 18禁影院亚洲专区| 日本精品影院| 国产91久久久久久| 日本爱爱精品一区二区| 亚洲综合欧美在线一区在线播放| 色综合久久久久8天国| 午夜国产理论| 91精品啪在线观看国产91九色| 视频一本大道香蕉久在线播放| 日本高清免费不卡视频| 色有码无码视频| 久草网视频在线| 久久久久久久久久国产精品| 亚洲国产综合精品一区| 国产在线小视频| 欧美a在线视频| 欧美不卡视频在线| 色综合久久综合网| 国产在线拍偷自揄观看视频网站| 人妻精品久久无码区| 国产免费羞羞视频| 国产综合网站| 国产精品lululu在线观看| 亚洲精品国偷自产在线91正片| 日韩毛片在线播放| 国产第三区| 国产成人欧美| 国产丝袜第一页| 国产麻豆精品手机在线观看| 91精品专区国产盗摄| 沈阳少妇高潮在线| 亚洲人成人无码www| 久草视频精品| 伊人婷婷色香五月综合缴缴情| 久久久久亚洲精品成人网| 日本伊人色综合网| 久久综合伊人 六十路| 国产成人a在线观看视频| 99草精品视频| 亚洲精品视频免费观看| 日韩乱码免费一区二区三区| 天天综合网色| 伊人天堂网| 少妇人妻无码首页| 成人无码一区二区三区视频在线观看| 日本午夜在线视频| 青青青视频免费一区二区| 国内精品九九久久久精品| 国产精品成| 波多野结衣一区二区三区AV| 久久精品女人天堂aaa| 成人福利在线免费观看| 久久香蕉国产线| 成人国产精品一级毛片天堂 | 国产在线精品人成导航| 亚洲欧美精品日韩欧美| 成年人免费国产视频| 91久久精品日日躁夜夜躁欧美| 婷婷在线网站| 玩两个丰满老熟女久久网| 波多野结衣国产精品| 亚洲婷婷六月| 草草影院国产第一页| 日本人妻丰满熟妇区| 色综合激情网| 99re在线视频观看| 91在线视频福利| 亚洲一区二区成人| 国产精品任我爽爆在线播放6080 | 国产综合无码一区二区色蜜蜜| 亚洲精品午夜天堂网页| 4虎影视国产在线观看精品| 无码福利视频| 麻豆精品国产自产在线| 亚洲 日韩 激情 无码 中出| 国产永久在线观看| 亚洲中文字幕日产无码2021| 久久天天躁狠狠躁夜夜2020一| 国产精品99一区不卡| 日韩精品视频久久| 国产精品一老牛影视频| 中文字幕乱妇无码AV在线|