亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        以軟件構(gòu)造為中心的軟件工程實(shí)踐化教學(xué)探索

        2021-06-25 14:17:50
        軟件導(dǎo)刊 2021年6期
        關(guān)鍵詞:代碼軟件模塊

        彭 鑫

        (復(fù)旦大學(xué) 軟件學(xué)院,上海 200438)

        0 引言

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

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

        按照以上指導(dǎo)思想,本文設(shè)計(jì)了軟件工程課程教學(xué)及配套實(shí)踐內(nèi)容,在復(fù)旦大學(xué)軟件學(xué)院開展課程教學(xué),并依托華為軟件開發(fā)云DevCloud 平臺(tái)[7]開展實(shí)踐教學(xué),取得了良好效果。

        1 課程教學(xué)及實(shí)踐安排

        根據(jù)軟件工程實(shí)踐化教學(xué)的需要,同時(shí)考慮修讀本課程學(xué)生的專業(yè)基礎(chǔ)及可接受度,本文確定了以下3 條課程教學(xué)內(nèi)容安排基本原則:

        (1)以軟件構(gòu)造活動(dòng)為中心。以詳細(xì)設(shè)計(jì)、編碼、單元測(cè)試等軟件構(gòu)造活動(dòng)以及與之密切相關(guān)的版本管理等協(xié)作支持能力為中心,強(qiáng)調(diào)本科生可深入理解并切實(shí)掌握的軟件工程能力。

        (2)突出實(shí)踐化培養(yǎng)特色。通過課程實(shí)踐項(xiàng)目加強(qiáng)學(xué)生對(duì)相關(guān)知識(shí)的理解、鍛煉對(duì)應(yīng)的軟件工程能力,課程教學(xué)內(nèi)容及進(jìn)度安排配合實(shí)踐項(xiàng)目進(jìn)展過程。

        (3)體現(xiàn)軟件工程師成長(zhǎng)路徑。課程教學(xué)內(nèi)容安排體現(xiàn)企業(yè)中軟件工程師的成長(zhǎng)路徑,按照局部編碼、詳細(xì)設(shè)計(jì)、總體設(shè)計(jì)、需求分析與測(cè)試的順序逐步培養(yǎng)學(xué)生的軟件工程能力,同時(shí)穿插版本管理和配置管理等團(tuán)隊(duì)協(xié)作能力培養(yǎng)。

        根據(jù)以上原則,本文設(shè)計(jì)了課程相關(guān)教學(xué)模塊及實(shí)踐內(nèi)容。

        1.1 課程教學(xué)模塊設(shè)計(jì)

        課程教學(xué)內(nèi)容模塊及其教學(xué)順序如表1 所示。軟件工程概述部分為學(xué)生提供了一個(gè)關(guān)于軟件工程思想及其基本內(nèi)容的概覽,為其理解后續(xù)學(xué)習(xí)內(nèi)容提供一個(gè)基本的上下文知識(shí)背景。后續(xù)學(xué)習(xí)過程從個(gè)人開發(fā)技能和必要的軟件過程與團(tuán)隊(duì)協(xié)作能力開始,逐步展開軟件設(shè)計(jì)、軟件需求、軟件測(cè)試等教學(xué)內(nèi)容。其中,個(gè)人開發(fā)技能和軟件設(shè)計(jì)兩部分中與軟件構(gòu)造密切相關(guān)的內(nèi)容是教學(xué)重點(diǎn),屬于學(xué)生較容易接受并掌握的基礎(chǔ)開發(fā)能力。各個(gè)課程教學(xué)模塊都需要與課程實(shí)踐及相應(yīng)的軟件開發(fā)環(huán)境和工具相結(jié)合,突出各部分的實(shí)踐要點(diǎn)。

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

        1.2 課程實(shí)踐內(nèi)容設(shè)計(jì)

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

        階段1(個(gè)人任務(wù)):熟悉DevCloud 及Git 版本庫(kù),在事先準(zhǔn)備好的Web 項(xiàng)目?jī)?nèi)容基礎(chǔ)上通過fork 操作建立自己的代碼倉(cāng)庫(kù),利用Maven 完成項(xiàng)目構(gòu)建,并在華為云上進(jìn)行在線部署。

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

        階段3(小組任務(wù)—代碼質(zhì)量):實(shí)現(xiàn)系統(tǒng)中的會(huì)議申請(qǐng)與管理等相關(guān)功能;實(shí)踐單元測(cè)試,要求項(xiàng)目中的代碼測(cè)試覆蓋率不低于80%;提升代碼質(zhì)量,要求使用DevCloud代碼質(zhì)量檢查工具進(jìn)行代碼質(zhì)量檢查,并解決檢查中暴露出來的代碼質(zhì)量問題。

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

        階段5(小組任務(wù)—需求分析與測(cè)試):完成系統(tǒng)中的會(huì)議評(píng)審意見答復(fù)(rebuttal)與論文錄用相關(guān)功能;開展需求分析,檢視此前軟件實(shí)現(xiàn)中的需求完備性和準(zhǔn)確性;在單元測(cè)試的基礎(chǔ)上實(shí)踐集成測(cè)試;結(jié)合DevCloud 和Sonar-Qube 的代碼檢測(cè)能力進(jìn)一步改善代碼質(zhì)量;進(jìn)一步完善CI/CD 流水線,使每個(gè)任務(wù)的健康度都達(dá)到四星及以上(卓越班要求)。

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

        2 實(shí)踐教學(xué)效果

        采用上述實(shí)踐化教學(xué)方式在復(fù)旦大學(xué)軟件學(xué)院開展本科軟件工程教學(xué)取得了良好效果。學(xué)生普遍反饋課程實(shí)踐項(xiàng)目對(duì)其有一定壓力,但對(duì)于理解軟件工程理論及培養(yǎng)工程化開發(fā)能力有很大幫助。

        2.1 實(shí)踐中存在的問題

        在課程實(shí)踐項(xiàng)目的每個(gè)階段,都會(huì)對(duì)各小組交付情況進(jìn)行評(píng)估,并通過課堂交流的方式邀請(qǐng)一些小組進(jìn)行分享。通過該過程也發(fā)現(xiàn)了學(xué)生在課程實(shí)踐中的一些問題,主要包括以下幾個(gè)方面:

        (1)邏輯不嚴(yán)密、測(cè)試不充分。對(duì)輸入的合法性檢查不夠,例如密碼長(zhǎng)度限制檢查、必填數(shù)據(jù)項(xiàng)的非空檢查等;未使用登錄攔截器,可在未登錄狀態(tài)下直接使用URL 訪問特定頁(yè)面。

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

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

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

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

        (5)用戶界面不友好。界面上存在一些對(duì)用戶不友好的情況,例如點(diǎn)擊按鈕后系統(tǒng)沒有任何提示、執(zhí)行操作后無(wú)法看到操作結(jié)果、一些重要信息無(wú)處查看等。

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

        2.2 進(jìn)一步的實(shí)踐探索

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

        (1)需求規(guī)劃和任務(wù)交流。使用DevCloud 進(jìn)行需求分解與開發(fā)任務(wù)規(guī)劃,在此基礎(chǔ)上通過視頻會(huì)議或即時(shí)通信討論組的方式進(jìn)行溝通討論及結(jié)對(duì)開發(fā),通過共享文檔的方式約定開發(fā)接口、記錄會(huì)議紀(jì)要以及協(xié)作完成實(shí)驗(yàn)報(bào)告。

        (2)設(shè)計(jì)思維和體系結(jié)構(gòu)理解。在前后端分離的基礎(chǔ)上,明確定義了后端接口及其契約,同時(shí)給出了包含后端模塊劃分及前端Web 組件結(jié)構(gòu)的完整設(shè)計(jì)方案,在設(shè)計(jì)方案基礎(chǔ)上進(jìn)行開發(fā)任務(wù)分配與協(xié)同。

        (3)演化式設(shè)計(jì)與軟件重構(gòu)。在迭代化的開發(fā)過程中不斷評(píng)估設(shè)計(jì)方案的不足,據(jù)此對(duì)代碼進(jìn)行整理與重構(gòu),從而完善設(shè)計(jì)方案。

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

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

        (6)軟件測(cè)試。初步建立測(cè)試驅(qū)動(dòng)開發(fā)實(shí)踐,通過JUnit 工具編寫測(cè)試用例,對(duì)類或方法進(jìn)行單元測(cè)試,并保證一定的代碼覆蓋率;采用Web 自動(dòng)化測(cè)試方法,通過大量測(cè)試用例的自動(dòng)運(yùn)行保證后臺(tái)接口質(zhì)量。

        3 結(jié)語(yǔ)

        課程實(shí)踐是軟件工程課程的重要組成部分,也是幫助學(xué)生理解與鞏固課堂教學(xué)內(nèi)容、培養(yǎng)軟件工程能力的重要支撐。以軟件構(gòu)造活動(dòng)為中心并依托基于云的軟件開發(fā)平臺(tái),使得軟件工程實(shí)踐教學(xué)的開展更加契合修讀軟件工程概論課程本科生的專業(yè)基礎(chǔ)和接受能力,引導(dǎo)其逐步理解與接受軟件工程的思想、方法及相關(guān)的工程師文化。今后還將結(jié)合翻轉(zhuǎn)課堂思想,加強(qiáng)課堂教學(xué)的互動(dòng)性和研討性,同時(shí)進(jìn)一步打通課堂理論教學(xué)與課程實(shí)踐相關(guān)內(nèi)容,繼續(xù)推進(jìn)軟件工程的實(shí)踐化教學(xué)之路。

        猜你喜歡
        代碼軟件模塊
        28通道收發(fā)處理模塊設(shè)計(jì)
        “選修3—3”模塊的復(fù)習(xí)備考
        禪宗軟件
        軟件對(duì)對(duì)碰
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        選修6 第三模塊 International Relationships
        談軟件的破解與保護(hù)
        精品(2015年9期)2015-01-23 01:36:01
        亚洲国产精品一区二区久| 日本少妇高潮喷水视频| 我的美艳丝袜美腿情缘| 日韩无码专区| 国产亚洲精品久久777777| 国产99久久无码精品| 人妻精品人妻一区二区三区四五 | a级毛片无码久久精品免费| 在线精品一区二区三区| 亚洲av无码成人网站www| 综合图区亚洲偷自拍熟女| 国产3p一区二区三区精品| 欧美成人午夜免费影院手机在线看 | 三年片在线观看免费观看大全中国| 国产亚洲日韩在线三区| 亚洲综合伊人制服丝袜美腿| 91在线视频视频在线| 免费在线观看av不卡网站| 亚洲h在线播放在线观看h| 国产精品九九九久久九九| 国产一区二区三区不卡在线播放| 亚洲av综合色区无码一区| 99蜜桃在线观看免费视频网站| 人妻系列无码专区久久五月天 | 中文字幕中文一区中文字幕| 亚洲精品中文字幕一区二区| 精品无码日韩一区二区三区不卡| 亚洲男人的天堂精品一区二区| 国产亚洲一区二区三区三州| 亚洲麻豆视频免费观看| 欧美成人免费全部| 免费黄色福利| 全程国语对白资源在线观看 | 久久人妻少妇嫩草av蜜桃 | 亚洲一区二区三区日本久久九| 国产免费午夜福利蜜芽无码| 国产一区二区三区视频地址| 凹凸在线无码免费视频| 无码毛片高潮一级一免费| 精品久久中文字幕一区 | 色妞色视频一区二区三区四区 |