• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2024-01-02 08:35:14沈立煒
      軟件導(dǎo)刊 2023年12期
      關(guān)鍵詞:代碼工具軟件

      沈立煒,彭 鑫

      (復(fù)旦大學(xué) 計算機科學(xué)技術(shù)學(xué)院,上海 200433)

      0 引言

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

      作者所在教學(xué)團(tuán)隊早期的軟件工程教學(xué)模式普遍圍繞軟件生命周期,并以瀑布模型等經(jīng)典軟件開發(fā)模型為主線,按照需求分析、軟件設(shè)計、實現(xiàn)與測試、軟件維護(hù)幾個部分展開。整個課程以結(jié)構(gòu)化方法和面向?qū)ο蠓椒楹诵膬?nèi)容,在教學(xué)過程中穿插與各部分內(nèi)容相關(guān)的習(xí)題,最后以一個面向特定項目的軟件開發(fā)文檔作為主要課程實踐提交物??傮w而言,這種教學(xué)方法較為注重經(jīng)典軟件工程方法以及軟件開發(fā)過程與文檔,弱化了軟件構(gòu)造與維護(hù)等實踐內(nèi)容,導(dǎo)致學(xué)生難以獲得關(guān)于軟件工程方法與技術(shù)的切身體會和深刻理解,遑論軟件工程實踐能力,在課程教學(xué)中經(jīng)常會獲得諸如“教材和教學(xué)內(nèi)容過于抽象”“照本宣科、條條框框”“缺少實踐能力培養(yǎng)”等評價。

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

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

      1 以實踐能力為中心的教學(xué)設(shè)計

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

      基于以上對教學(xué)內(nèi)容和體系的規(guī)劃,教學(xué)團(tuán)隊與華為公司共同編寫了一本新的軟件工程教材——《現(xiàn)代軟件工程基礎(chǔ)》[8]。其在經(jīng)典教學(xué)內(nèi)容的基礎(chǔ)上結(jié)合現(xiàn)代軟件工程廣泛涉及的基于云的軟件開發(fā)及運維等領(lǐng)域知識,同時將華為多年來在信息通信技術(shù)領(lǐng)域積累的軟件開發(fā)實踐與相關(guān)工具使用經(jīng)驗合理融入其中。該教材的一大特點是從一個具備基礎(chǔ)開發(fā)技術(shù)的初級程序員視角出發(fā),按照軟件工程師的學(xué)習(xí)和成長過程對教學(xué)內(nèi)容進(jìn)行了編排,具體如表1 所示。基于該教材的教學(xué)方案優(yōu)先培養(yǎng)學(xué)生的團(tuán)隊開發(fā)意識,使其理解個人在軟件開發(fā)過程中的角色定位,以及團(tuán)隊協(xié)作的各個環(huán)節(jié)、協(xié)作方式與可用工具;隨后著重訓(xùn)練個人開發(fā)技能,強調(diào)從開發(fā)小的軟件模塊起步,從而使學(xué)生深刻理解高質(zhì)量軟件編碼應(yīng)達(dá)到的細(xì)節(jié)要求;接著放大視野,使學(xué)生考慮軟件的整體設(shè)計,合理應(yīng)用面向?qū)ο笤O(shè)計模式,重復(fù)利用開發(fā)框架,并持續(xù)考慮軟件重構(gòu);最后培養(yǎng)學(xué)生把握全局需求的能力,培養(yǎng)其需求分析、系統(tǒng)測試、發(fā)布部署的高層次能力。

      Table 1 Teaching content arrangement表1 教學(xué)內(nèi)容編排

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

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

      2 實踐化教學(xué)內(nèi)容實施

      2.1 實踐內(nèi)容與工具應(yīng)用要求

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

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

      Table 3 Project phased tasks and corresponding requirements表3 項目分階段任務(wù)及相應(yīng)要求

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

      2.2 實踐過程

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

      2.2.1 制定開發(fā)規(guī)范

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

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

      2.2.2 使用CodeArts代碼托管平臺支持團(tuán)隊協(xié)作

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

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

      2.2.3 高質(zhì)量軟件編碼

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

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

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

      使用CodeArts 的代碼檢查工具能夠發(fā)現(xiàn)代碼中存在的缺陷,并獲得相應(yīng)的質(zhì)量報告。實踐小組能根據(jù)缺陷位置及修改建議進(jìn)行修復(fù),從而提高代碼質(zhì)量。圖4 為CodeArts代碼檢查工具的缺陷詳細(xì)信息界面。

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

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

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

      2.2.6 軟件設(shè)計與測試

      實踐小組采用面向?qū)ο蟮脑O(shè)計方法定義購物系統(tǒng)的實現(xiàn)類,規(guī)劃其屬性和操作。基于此,將后端服務(wù)操作封裝為RESTful 接口,以實現(xiàn)前后端交互。此外,實踐小組主要采用單元測試工具(如Junit、PyUnit 等)對類方法進(jìn)行測試,使用接口測試工具(如APIFox、Postman 等)對RESTful接口進(jìn)行功能性驗證。

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

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

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

      3 結(jié)語

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

      猜你喜歡
      代碼工具軟件
      禪宗軟件
      英語文摘(2021年10期)2021-11-22 08:02:26
      波比的工具
      波比的工具
      軟件對對碰
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      “巧用”工具
      讀者(2017年18期)2017-08-29 21:22:03
      談軟件的破解與保護(hù)
      精品(2015年9期)2015-01-23 01:36:01
      大关县| 合阳县| 麻江县| 大庆市| 米易县| 盘锦市| 白朗县| 卓资县| 宜兰市| 荥经县| 马鞍山市| 新乡县| 大丰市| 吴旗县| 黑龙江省| 盖州市| 河池市| 上杭县| 加查县| 九江市| 嘉黎县| 随州市| 宾阳县| 枝江市| 攀枝花市| 哈密市| 南溪县| 芮城县| 陇西县| 丰城市| 宜春市| 舞钢市| 汶上县| 天柱县| 满城县| 河池市| 岐山县| 广水市| 如东县| 玉屏| 郓城县|