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

以實踐能力為中心的軟件工程教學方法探索

2024-01-02 08:35:14沈立煒
軟件導刊 2023年12期
關鍵詞:能力課程教學

沈立煒,彭 鑫

(復旦大學 計算機科學技術學院,上海 200433)

0 引言

軟件工程是一門關注復雜軟件系統開發、維護與運行相關方法與技術的基礎性課程,在新工科建設中具有重要地位,其教學方法與模式改革受到了廣泛關注[1-3]。軟件工程課程涉及的理論知識和概念眾多,學生由于缺少相關實踐經驗和背景知識導致理解上存在困難。因此,如何借助課程實踐幫助學生理解軟件工程相關概念和理論并掌握相關實踐能力,成為軟件工程課程教學的一個關鍵問題[4-5]。

作者所在教學團隊早期的軟件工程教學模式普遍圍繞軟件生命周期,并以瀑布模型等經典軟件開發模型為主線,按照需求分析、軟件設計、實現與測試、軟件維護幾個部分展開。整個課程以結構化方法和面向對象方法為核心內容,在教學過程中穿插與各部分內容相關的習題,最后以一個面向特定項目的軟件開發文檔作為主要課程實踐提交物??傮w而言,這種教學方法較為注重經典軟件工程方法以及軟件開發過程與文檔,弱化了軟件構造與維護等實踐內容,導致學生難以獲得關于軟件工程方法與技術的切身體會和深刻理解,遑論軟件工程實踐能力,在課程教學中經常會獲得諸如“教材和教學內容過于抽象”“照本宣科、條條框框”“缺少實踐能力培養”等評價。

近年來,企業軟件開發實踐圍繞云原生(Cloud Native)與開發運維一體化(DevOps)已經取得了長足的發展和進步,敏捷開發、持續集成、持續部署、微服務、演化式設計等開發實踐得到了廣泛應用,同時軟件開發工具與環境也在面向基于云的一體化開發平臺遷移。以上對軟件工程課程教學提出了新的要求:一方面課程教學內容需要反映軟件工程實踐最新發展;另一方面課程教學方式與方法需要突出相關實踐能力培養。

針對以上問題,教學團隊圍繞以實踐能力為中心的軟件工程教學方法持續開展探索與實踐,以交付可運行軟件的構造活動為中心開展實踐化教學,同時通過一種增量、迭代的過程融入軟件開發與交付過程中關鍵能力的培養。與傳統軟件工程教學方法相比,這種方法更注重以代碼為載體的軟件工程實踐能力培養,同時按照編碼、設計、需求的順序從低到高逐步融入不同層次的軟件工程能力要求。這種新的教學方法已經在復旦大學計算機科學與技術以及軟件工程專業的軟件工程課程教學中進行了實踐,其效果已經得到初步驗證。

1 以實踐能力為中心的教學設計

選修軟件工程課程的本科生一般對Java、C++等程序設計語言和基本數據結構有一定了解,但這些基礎能力還不足以使其完成一個相對復雜的、具有完整需求的軟件開發項目。軟件工程課程的目標是培養學生解決復雜工程問題的能力[6],因此要在前序課程內容的基礎上從一個相對完整的工程實踐視角組織課程教學與實踐[7]。首先需要讓學生理解和思考軟件開發所面臨的各方面挑戰,因此除理論知識講授外還需通過課程實踐項目使學生切身體驗開發過程中與軟件質量、運維演化等相關問題的解決方法;其次針對這些實際問題引導學生強化具體實踐能力,從而在實踐項目中解決各種突發問題;最后通過實踐項目中開展的測試、度量等手段評估學生理解問題和應用相關能力解決問題的能力。

基于以上對教學內容和體系的規劃,教學團隊與華為公司共同編寫了一本新的軟件工程教材——《現代軟件工程基礎》[8]。其在經典教學內容的基礎上結合現代軟件工程廣泛涉及的基于云的軟件開發及運維等領域知識,同時將華為多年來在信息通信技術領域積累的軟件開發實踐與相關工具使用經驗合理融入其中。該教材的一大特點是從一個具備基礎開發技術的初級程序員視角出發,按照軟件工程師的學習和成長過程對教學內容進行了編排,具體如表1 所示?;谠摻滩牡慕虒W方案優先培養學生的團隊開發意識,使其理解個人在軟件開發過程中的角色定位,以及團隊協作的各個環節、協作方式與可用工具;隨后著重訓練個人開發技能,強調從開發小的軟件模塊起步,從而使學生深刻理解高質量軟件編碼應達到的細節要求;接著放大視野,使學生考慮軟件的整體設計,合理應用面向對象設計模式,重復利用開發框架,并持續考慮軟件重構;最后培養學生把握全局需求的能力,培養其需求分析、系統測試、發布部署的高層次能力。

Table 1 Teaching content arrangement表1 教學內容編排

圍繞以上知識點,相應的工程實踐安排如表2 所示。不同階段的任務循序漸進,使學生從基本的團隊協作技能出發,逐步掌握前后端分離軟件的開發、測試、發布和部署等能力。同時依托華為云軟件開發生產線CodeArts(原華為軟件開發云DevCloud)構建開發流水線,使學生體驗復雜軟件系統的開發過程并掌握相關工具的使用方法。整個實踐方案強調對學生高質量編碼能力的訓練,培養其代碼檢查、缺陷管理、構建部署、設計重構等進階能力。最后從需求分析和系統測試兩方面評價學生對目標軟件需求的理解情況。

Table 2 Arrangement of engineering practice表2 工程實踐安排

2 實踐化教學內容實施

2.1 實踐內容與工具應用要求

以在線Web 購物系統的實踐項目為例,要求學生設計一款簡易的、采用前后端分離架構的購物系統,涵蓋商戶開設店鋪、設置店面、商品管理,用戶購買商品、資金管理、訂單管理,系統管理員審批開店、商品上架請求等學生較為熟知的系統功能。學生以4 人為一組自由成團,在實現商戶、用戶和系統管理員3 個角色功能的過程中,重點強調編碼能力以及團隊協作能力的訓練。

表3 列舉了該實踐項目的分階段任務及相應要求。在團隊開發過程中,學生需逐步熟悉并使用代碼托管平臺完成分支開發與合并,并解決可能出現的合并沖突問題;需確保開發代碼的質量,包括代碼風格、注釋、各類可靠性編程細節。此外,團隊同學間需要進行持續性討論,共同設計系統架構、后端接口,梳理系統需求,完成核心模塊測試。教師通過項目演示以及在CodeArts 等工具中留存的開發過程記錄對小組完成情況進行評價,并根據個人貢獻程度給出成員的具體實踐得分。

Table 3 Project phased tasks and corresponding requirements表3 項目分階段任務及相應要求

應用于項目實踐的工具主要分為兩個部分:①開發環境與相關技術棧工具。該部分工具可由學生自主選擇。通常情況下,學生會根據所使用的編程語言選擇VSCode、IntelliJIDEA 或PyCharm 作為開發環境,選擇Vue.js 作為前端框架,Spring Boot 或Flask 作為后端框架,并使用MySQL進行數據存儲;②應用于團隊協作、代碼質量管理、設計、測試等環節的工具。要求學生依托CodeArts 相關工具進行代碼托管、版本管理、代碼檢查和缺陷管理等;應用主流UML 建模工具完成對設計與需求的描述,應用單元測試和接口測試工具進行系統驗證。

2.2 實踐過程

以下通過案例的形式介紹某小組的軟件開發過程以及對相關工具的使用情況。

2.2.1 制定開發規范

在實踐項目啟動階段,安排助教參與實踐小組關于開發規范的討論,共同制定團隊協作與編程規范,具體包括團隊分工與工作流程、分支與合并工作規范、代碼提交規范等,其中對代碼提交信息的規定能使團隊通過統一的詞句規則解釋所提交代碼的意圖[9-10]。圖1 為實踐小組借鑒其他成熟項目并經過內部討論后形成的代碼提交信息格式范例。

Fig.1 Format specification example of code submission message圖1 代碼提交信息格式范例

2.2.2 使用CodeArts代碼托管平臺支持團隊協作

CodeArts 的在線代碼托管平臺能使學生體驗團隊協作的工作模式。學生分別在本地進行代碼開發并將代碼提交至倉庫,從而提高協同開發效率。實踐小組則在預先定義的時間節點通過分支合并對不同成員編寫的代碼進行整合。圖2 展示了CodeArts 代碼托管平臺中的分支界面 與提交記錄界面。

Fig.2 Branch and record submitting interface in CodeArts code hosting platform圖2 CodeArts代碼托管平臺中的分支與提交記錄界面

2.2.3 高質量軟件編碼

高質量軟件編碼是項目實踐的重點[11-12]。學生通過學習課堂理論知識以及代碼案例理解存在問題的編碼方式以及保證代碼質量的編碼技術。圖3 為代碼命名與注釋規范、防御式編程以及異常處理方面的實踐示例。首先,實踐小組自定義后端接口開發時的注釋規范,例如要求每個函數都要在開頭使用""" 3 個引號的形式注明函數功能、參數類型及返回值類型;其次,在編寫具體方法代碼時需考慮方法的各種可能輸入,并在代碼中進行必要的數據驗證,從而提高方法的可靠性;最后,建立并封裝ServiceException 類來負責集中構造具有不同含義的異常,從而提高可擴展性。

Fig.3 Examples of high-quality software coding practice圖3 高質量軟件編碼實踐示例

2.2.4 使用CodeArts代碼檢查工具支持代碼質量控制

使用CodeArts 的代碼檢查工具能夠發現代碼中存在的缺陷,并獲得相應的質量報告。實踐小組能根據缺陷位置及修改建議進行修復,從而提高代碼質量。圖4 為CodeArts代碼檢查工具的缺陷詳細信息界面。

Fig.4 Defect details interface of CodeArts code inspection tool圖4 CodeArts代碼檢查工具的缺陷詳細信息界面

2.2.5 使用CodeArts缺陷管理平臺記錄缺陷處理流程

CodeArts 的缺陷管理平臺能夠記錄和跟蹤實踐小組在開發過程中發現的缺陷以及缺陷的后續處理情況。圖5為CodeArts 缺陷管理平臺界面。

2.2.6 軟件設計與測試

實踐小組采用面向對象的設計方法定義購物系統的實現類,規劃其屬性和操作。基于此,將后端服務操作封裝為RESTful 接口,以實現前后端交互。此外,實踐小組主要采用單元測試工具(如Junit、PyUnit 等)對類方法進行測試,使用接口測試工具(如APIFox、Postman 等)對RESTful接口進行功能性驗證。

2.3 實踐效果及存在的主要問題

為考察實踐效果,將以實踐能力為中心的教學方式與前期課程采用的圍繞軟件生命周期的教學方式進行比較(布置類似項目目標),結果如表4 所示。在文檔維度,早期圍繞軟件生命周期的教學與實踐注重文檔規模,涵蓋需求分析和系統設計兩階段內容,學生撰寫的文檔內容細致、頁數較多;而以實踐能力為中心的項目更強調文檔的精簡性,重視系統核心模塊的設計與需求建模,以及接口的詳細定義,平均文檔規模較小。在代碼維度,早期實踐方式并不強制要求系統實現,部分小組實現的代碼規模較小,且不關注代碼質量;以實踐能力為中心的項目要求團隊持續開發,完成階段性布置,并需在開發過程中基于自動化工具發現、記錄并修正代碼bug。在過程維度,早期實踐中學生花費較少時間完成文檔編撰;而以實踐能力為中心的項目貫穿整個學期,學生充分發揮代碼提交、合并等協作能力??傮w而言,以實踐能力為中心的教學與實踐能使學生體驗到較為完整的復雜軟件系統開發過程,培養其利用成熟工具輔助開發軟件以及團隊協作的能力。此外,以實踐能力為中心的教學方式將高質量軟件編碼貫穿項目各個環節,著重鍛煉學生開發可讀、可靠、可信代碼的能力。

誠然,不同實踐小組的技術背景和成員能力各不相同,因此在實踐過程中也存在進度落后、遇到較大阻力的小組。具體問題主要體現在以下兩個方面:首先,課程主要面向計算機專業具有初級開發能力的學生。對于部分學生而言,他們第一次接觸前后端分離的Web 應用開發項目,第一次嘗試前端代碼開發,更是第一次通過團隊協同完成項目開發。這些“第一次”使其無法迅速融入實踐節奏,需要教師和助教提供主流開發框架與技術棧的講解與指導,引導學生以最小代價快速入門;其次,部分小組在項目初期溝通并不順暢。由于分工原因,實踐項目起步時負責后端的同學可能不了解前端同學的需求,且其對同一接口功能和命名規范的理解尚未統一,可能會造成前后端之間接口頻繁修改等問題。因此,在實踐過程中教師和助教需及時了解小組工作進度,及時發現問題,協助學生間溝通。

3 結語

本文介紹了以實踐能力為中心的軟件工程教學方法,將學生視為初級軟件工程師,從成長路徑的視角教授其從低到高不同層次的軟件工程知識要點,并強化以交付高質量軟件代碼為核心的增量、迭代、團隊式實踐訓練,使學生切身體驗團隊軟件開發流程。在未來的教學工作中,首先需要跟蹤軟件工程實踐最新進展持續探索并優化教學設計,同步調整教學內容和項目實踐側重點;其次需要不斷鞏固教師個人實踐能力,敦促其掌握主流軟件開發環境和工具的使用方法,沉淀具有特色的實踐案例。

猜你喜歡
能力課程教學
消防安全四個能力
數字圖像處理課程混合式教學改革與探索
微課讓高中數學教學更高效
甘肅教育(2020年14期)2020-09-11 07:57:50
軟件設計與開發實踐課程探索與實踐
計算機教育(2020年5期)2020-07-24 08:53:38
為什么要學習HAA課程?
大興學習之風 提升履職能力
人大建設(2018年6期)2018-08-16 07:23:10
你的換位思考能力如何
“自我診斷表”在高中數學教學中的應用
東方教育(2017年19期)2017-12-05 15:14:48
對外漢語教學中“想”和“要”的比較
唐山文學(2016年2期)2017-01-15 14:03:59
抄能力
主站蜘蛛池模板: 四虎永久在线视频| 欧美不卡视频一区发布| 久久99国产精品成人欧美| 国产69精品久久久久孕妇大杂乱 | 在线观看欧美精品二区| 国产精品久久自在自2021| 国产另类视频| 欧美在线中文字幕| 精品久久久久成人码免费动漫| 中文无码日韩精品| 69国产精品视频免费| 人妻少妇乱子伦精品无码专区毛片| 亚洲区欧美区| 91丝袜乱伦| 大香伊人久久| 免费国产高清视频| 国产精品v欧美| 国产精品福利在线观看无码卡| 全午夜免费一级毛片| 伊人天堂网| 亚洲综合婷婷激情| 在线观看国产一区二区三区99| 国产欧美视频一区二区三区| 欧美无专区| 中文字幕久久亚洲一区| 国产精品熟女亚洲AV麻豆| 精品久久人人爽人人玩人人妻| 日韩成人高清无码| 国产传媒一区二区三区四区五区| 国产超碰在线观看| 欧美日韩久久综合| 欧美19综合中文字幕| 丁香六月综合网| 91日本在线观看亚洲精品| 又爽又大又黄a级毛片在线视频 | 无码精品福利一区二区三区| 日韩高清一区 | 亚洲欧美在线看片AI| 1024你懂的国产精品| 久久精品无码一区二区国产区| 国产拍揄自揄精品视频网站| 国产99欧美精品久久精品久久| 熟妇人妻无乱码中文字幕真矢织江| 久久99国产视频| 日韩第九页| 国产91精品最新在线播放| 国产精品微拍| 91麻豆精品视频| 午夜不卡福利| 久久久久久久97| 欧美在线天堂| 色偷偷综合网| 青青国产视频| 亚洲综合在线最大成人| 国产成人精品三级| 丁香五月婷婷激情基地| 国产成人福利在线| 99久久成人国产精品免费| 5555国产在线观看| 中文字幕1区2区| 真实国产乱子伦高清| 国产在线观看91精品| 亚洲精品无码成人片在线观看| 国产中文在线亚洲精品官网| 四虎精品免费久久| 国产特级毛片aaaaaaa高清| 香蕉国产精品视频| 精品久久蜜桃| 国产精品亚洲天堂| 夜夜操狠狠操| 宅男噜噜噜66国产在线观看| 欧美日韩在线观看一区二区三区| 国产一在线| 成人无码一区二区三区视频在线观看| 欧美日韩国产在线人| 99热这里只有精品国产99| 4虎影视国产在线观看精品| 999国产精品| 成人精品午夜福利在线播放| a级毛片免费网站| 日韩成人高清无码| 中国美女**毛片录像在线|