
摘 要 針對傳統(tǒng)瀑布模型在物聯(lián)網(wǎng)實踐課程中的弊端,結(jié)合敏捷開發(fā)的優(yōu)點,提出一種適合物聯(lián)網(wǎng)工程實踐課程的教學(xué)方法,并給出了相應(yīng)的實施方法。采用多樣化的項目選題,引入敏捷開發(fā)中的Scrum模式,使用JIRA、SVN和Jenkins等工具進行項目管理,同時設(shè)計項目評估原則。任課教師可以獲取實時數(shù)據(jù),對項目進行連續(xù)跟蹤和及時反饋。實踐表明,該方法能使學(xué)生體驗真實項目的開發(fā)流程,提高實際編程能力和團隊協(xié)作能力,養(yǎng)成良好的程序設(shè)計風(fēng)格,編寫高質(zhì)量代碼。
關(guān)鍵詞 實踐教學(xué) 敏捷開發(fā) Scrum 項目管理
中圖分類號:G424? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A? DOI:10.16400/j.cnki.kjdkz.2020.02.049
Abstract In view of the disadvantages of traditional waterfall model in the practice course of Internet of things, combined with the advantages of agile development, a teaching method suitable for the practice course of Internet of things engineering is proposed, and the corresponding implementation method is given. It adopts diversified project topics, introduces scrum mode in agile development, uses JIRA, SVN, Jenkins and other tools for project management, and designs project evaluation principles. Teachers can get real-time data, track and feedback the project continuously. Practice shows that this method can enable students to experience the development process of real projects, improve their practical programming ability and teamwork ability, develop good programming style and write high-quality code.
Keywords practice teaching; agile development; Scrum; project management
0 引言
物聯(lián)網(wǎng)工程實踐是我校物聯(lián)網(wǎng)專業(yè)三年級學(xué)生的必修課程,學(xué)生已經(jīng)經(jīng)歷了嵌入式開發(fā)、C#開發(fā)、Android開發(fā)和數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)。學(xué)生通過該課程的學(xué)習(xí),掌握物聯(lián)網(wǎng)項目軟硬件開發(fā)和維護的一般過程。該課程通過實踐操作,讓學(xué)生深入理解物聯(lián)網(wǎng)框架和掌握物聯(lián)網(wǎng)項目開發(fā)的基本技術(shù)。
一般的物聯(lián)網(wǎng)工程實踐課程,采用傳統(tǒng)的瀑布模型進行開發(fā)。傳統(tǒng)的瀑布式開發(fā)模型,按照需求分析、概要設(shè)計、詳細(xì)設(shè)計、編碼、測試和運行維護等階段。瀑布式開發(fā)模型注重文檔,文檔是各階段銜接的必要信息,在可運行的軟件產(chǎn)品交付給用戶之前,用戶只能通過文檔來了解產(chǎn)品的“模樣”。由于學(xué)生沒有實際開發(fā)經(jīng)驗,對物聯(lián)網(wǎng)應(yīng)用了解不深,對撰寫文檔不感興趣,所以學(xué)生的學(xué)習(xí)積極性不高。[1]
1 敏捷開發(fā)方法
敏捷開發(fā)(Agile Development)是針對傳統(tǒng)的瀑布開發(fā)模式的弊端而產(chǎn)生的一種新的開發(fā)模式,Agile有輕巧、機敏、活力的意思,目標(biāo)是提高開發(fā)效率和響應(yīng)能力。[2]敏捷開發(fā)是一種以人為核心、迭代、循序漸進的開發(fā)方法,主要方法有極限編程(Extreme Programming,簡稱XP)、水晶方法(Crystal)、動態(tài)系統(tǒng)開發(fā)方法(Dynamic System Development Methodology,簡稱DSDM)、精益開發(fā)(Lean)、Scrum等,相對于那些“非敏捷”軟件開發(fā)方法來說,更強調(diào)適應(yīng)性而非預(yù)測性,更強調(diào)以人為導(dǎo)向而非過程導(dǎo)向。[3]
敏捷是一種指導(dǎo)思想或開發(fā)方式,而Scrum被認(rèn)為是全球最流行和最有效的敏捷開發(fā)的具體方式之一。Scrum的英文意思是橄欖球運動的一個專業(yè)術(shù)語,表示“爭球”。在敏捷開發(fā)中,Scrum不是開發(fā)產(chǎn)品的一種流程或一項技術(shù),而是一個框架,在這個框架里可以應(yīng)用各種方法和技術(shù)。[4]
2 敏捷開發(fā)的物聯(lián)網(wǎng)工程實踐面臨的挑戰(zhàn)
大部分的歐美IT企業(yè)已經(jīng)采用敏捷開發(fā)方法進行開發(fā),而近幾年受外企和軟件外包的帶動,中國IT公司也逐漸普及敏捷開發(fā)模式。IT界的轉(zhuǎn)變推動大學(xué)課程的改革,敏捷開發(fā)在物聯(lián)網(wǎng)工程實踐課程中得到越來越多的關(guān)注。根據(jù)物聯(lián)網(wǎng)專業(yè)的特點,如何設(shè)計基于敏捷的物聯(lián)網(wǎng)教學(xué)實踐環(huán)節(jié),成為教學(xué)改革的一個新問題。[5]
如果將敏捷開發(fā)直接運用到物聯(lián)網(wǎng)實踐課程的教學(xué)環(huán)節(jié)比較困難,面臨以下的問題:敏捷開發(fā)需要項目管理的連續(xù)跟蹤和及時反饋,如何進行項目的過程控制。學(xué)生需要在一個學(xué)期內(nèi),完成從需求分析到最終的產(chǎn)品交付,軟件項目在初期被切分成多個可獨立運行的小項目,并在每個小的迭代周期分別完成,每一次迭代周期可以開發(fā)一個可交付的軟件產(chǎn)品,在此過程中軟件一直處于可使用狀態(tài)。我們還需要跟蹤每個開發(fā)團隊的進度,對每個迭代周期進行及時反饋,這樣工作量巨大,教師需要采用敏捷開發(fā)的自動化工具來進行項目管理和過程控制。
3 敏捷開發(fā)的物聯(lián)網(wǎng)工程實踐教學(xué)課程的設(shè)計
針對以上的需求,引入敏捷開發(fā)中最流行的Scrum框架,精心設(shè)計了物聯(lián)網(wǎng)工程實踐課程的教學(xué)方案,并且搭建了物聯(lián)網(wǎng)實訓(xùn)支撐平臺。本文介紹了在項目選題、項目分組、項目管理和項目評估等方面的探索和經(jīng)驗。
3.1 項目選題
物聯(lián)網(wǎng)實踐項目的選題是實際教學(xué)中的一個關(guān)鍵問題。很多學(xué)校都嘗試引入真實物聯(lián)網(wǎng)項目,但是考慮到物聯(lián)網(wǎng)項目的復(fù)雜度、工作量、學(xué)生的背景、課程設(shè)置的局限性等問題,很難找到適合的項目。由于每年大約有120人選修此課程,而且學(xué)生背景差異比較大,因此合理的解決方案是提供多樣性的項目選題,使不同層次的學(xué)生都能找到自己感興趣的項目。這些項目有校企聯(lián)合開發(fā)的、學(xué)校內(nèi)部的,也有學(xué)生自定義題目,自定義的題目必須得到教師允許方可開展。項目的多樣化激發(fā)了學(xué)生的學(xué)習(xí)興趣,同時也豐富了學(xué)生的實際開發(fā)經(jīng)驗。
3.2 項目分組
Scrum團隊由產(chǎn)品負(fù)責(zé)人(Product Owner,簡稱PO)、Scrum主管(Scrum Master,簡稱SM)和Scrum開發(fā)團隊(Scrum Team)組成。在企業(yè)中,通常由系統(tǒng)架構(gòu)師(簡稱SE)擔(dān)任產(chǎn)品負(fù)責(zé)人,由資深員工擔(dān)任Scrum主管,由研發(fā)成員組成Scrum開發(fā)團隊。一個理想的Scrum團隊建議在5~9人左右,推崇小團隊和高效率。[6]
我們的課程每年約有120名學(xué)生,每個開發(fā)團隊由4~6人組成,大約有25個Scrum團隊,由學(xué)生自由組合,每個團隊自行推選出Scrum主管。由任課老師和用戶代表擔(dān)任產(chǎn)品負(fù)責(zé)人。
3.3 項目管理
在開課前,任課教師篩選出項目規(guī)模、復(fù)雜度和工作量適合的物聯(lián)網(wǎng)應(yīng)用項目作為學(xué)生的可選項目。在開學(xué)的第一周,由任課老師和用戶代表對項目進行介紹,然后由學(xué)生自由組合4~6人左右的開發(fā)團隊,選擇項目或自定義項目,自定義項目需由任課老師允許方可開發(fā)。
在整個Scrum過程中,Sprint是核心,Sprint指的是一次迭代,課程選擇的迭代周期是2周。Scrum開發(fā)團隊在每個Sprint中,首先在計劃會議中確定本次Sprint的計劃,然后完成計劃內(nèi)容的編碼和測試,在Sprint評審會議中向任課教師和用戶代表演示功能、檢視是否合格,最后在Sprint反思會議總結(jié)經(jīng)驗和教訓(xùn),提出進一步的改進措施。在每個Sprint結(jié)束,每個Scrum開發(fā)團隊需要提交“完成的”“可運行”的軟件(見圖1)。
為了更好地使用敏捷開發(fā)模式,對項目進行連續(xù)跟蹤和及時反饋,我們使用JIRA進行項目管理和開發(fā)管理。JIRA被廣泛應(yīng)用于缺陷跟蹤、項目跟蹤、任務(wù)跟蹤和敏捷管理等工作領(lǐng)域。為了更好地進行代碼管理,我們使用SVN進行代碼的版本控制,每次學(xué)生提交新的代碼到SVN后,自動運行Jenkins持續(xù)集成工具自動化部署環(huán)境,開發(fā)和測試人員可以看到最新的應(yīng)用程序。使用Jenkins可以使整個構(gòu)建、部署過程自動化,減輕開發(fā)團隊的工作量。
3.4 項目評估
項目評估遵循以下的原則:
第一,關(guān)注過程性評估。課程選擇的Sprint迭代周期是2周,將課程分為8個Sprint,任課老師和用戶代表參與每個Sprint評審會議,評估項目質(zhì)量。任課老師根據(jù)項目管理工具JIRA、版本控制軟件SVN和持續(xù)集成工具Jenkins中的實時數(shù)據(jù),不斷采集項目信息并且評估項目進度。過程性評價可以了解學(xué)生的動態(tài)信息,及時反饋信息和及時指導(dǎo),使計劃和方案不斷優(yōu)化。
第二,關(guān)注團隊貢獻(xiàn)和個人貢獻(xiàn)評估。Scrum強調(diào)的是開發(fā)團隊的自我管理,在整個過程中,每個團隊成員積極主動、技術(shù)過硬、自我管理,每個團隊成員的技術(shù)、協(xié)作能力得以提高。每個學(xué)生的分?jǐn)?shù)又細(xì)化為團隊整體得分和學(xué)生個人貢獻(xiàn),即培養(yǎng)了團隊協(xié)作探究能力,又注重學(xué)生的學(xué)習(xí)積極性。
第三,關(guān)注代碼質(zhì)量評估。課堂教學(xué)普遍的問題是學(xué)生實際程序設(shè)計能力比較差,代碼質(zhì)量不高。[7]對于一個項目,我們既關(guān)心它的功能實現(xiàn),也關(guān)心它的效率和效果。我們評價高質(zhì)量代碼有三個要素:可讀性、可維護性和可變現(xiàn)性,任課教師采用自動化工具對項目代碼進行檢測,并且在課程教學(xué)中引導(dǎo)學(xué)生重視并養(yǎng)成良好的程序設(shè)計風(fēng)格,編寫高質(zhì)量代碼。
4 結(jié)語
本文介紹了敏捷開發(fā)在物聯(lián)網(wǎng)實踐課程中的探討和研究。在物聯(lián)網(wǎng)實踐課程中采用多樣化的項目選題,引入敏捷開發(fā)中最流行的Scrum框架,使用項目管理工具JIRA、版本控制軟件SVN和持續(xù)集成工具Jenkins等進行項目管理和持續(xù)質(zhì)量控制,同時重新設(shè)計了項目評估標(biāo)準(zhǔn)。通過實踐教學(xué)環(huán)節(jié),希望幫助學(xué)生體驗物聯(lián)網(wǎng)系統(tǒng)開發(fā)流程,掌握物聯(lián)網(wǎng)項目開發(fā)的基本技術(shù)。
基金項目:武漢市教育局課題“基于敏捷開發(fā)的物聯(lián)網(wǎng)專業(yè)實踐教學(xué)改革”(2015118)
參考文獻(xiàn)
[1] 白魚秀,鄭歡歡.敏捷開發(fā)在軟件工程實踐課程中的應(yīng)用[J].計算機學(xué)報,2017(1):85-86,89.
[2] 顧家銘.敏捷開發(fā)在物聯(lián)網(wǎng)實踐教學(xué)中的探索[J].軟件導(dǎo)刊·教育技術(shù),2016.15(4):19-21.
[3] 張敬周,錢樂秋,朱三元.Agile方法研究綜述[J].計算機應(yīng)用與軟件,2002.19(6):1-9,54.
[4] 顧家銘.Scrum和Robocode在C#教學(xué)中的應(yīng)用探索[J].科教導(dǎo)刊,2016(16):117-118.
[5] 白曉穎,李山山,李明杰,等.基于敏捷開發(fā)的軟件工程實踐教學(xué)探討[J].實驗技術(shù)與管理,2018.35(4):6-11.
[6] 葉俊文.融合Scrum敏捷開發(fā)的標(biāo)準(zhǔn)研制項目管理模式探索[J].中國標(biāo)準(zhǔn)化,2019(5):38-43,53.
[7] 陳立前,李姍姍,葉常春.程序設(shè)計教學(xué)中學(xué)生程序設(shè)計風(fēng)格的養(yǎng)成[J].計算機工程與科學(xué),2016.38(z1):50-54.