將敏捷方法(Agile)和基于模型的開發(fā)(MBD)結(jié)合能夠有效提升軟件開發(fā)的質(zhì)量和效率。本文旨在介紹MBD在敏捷環(huán)境中的工作機(jī)制、實(shí)現(xiàn)方式以及面臨的挑戰(zhàn)。
什么是敏捷軟件開發(fā)?
傳統(tǒng)的軟件開發(fā)方法論是瀑布式(Waterfall)模型。然而,這一線性、自上而下的方法存在局限性。如今,在軟件開發(fā)中應(yīng)用敏捷方法來應(yīng)對軟件項(xiàng)目的動態(tài)性成為了推薦方法。
敏捷宣言中,敏捷的核心價(jià)值包括:
- 個(gè)體與互動高于流程和工具
- 可工作的軟件高于詳盡的文檔
- 客戶合作高于合同談判
- 響應(yīng)變化高于遵循計(jì)劃
敏捷注重盡早、持續(xù)、頻繁地交付有價(jià)值的軟件產(chǎn)品,同時(shí)支持變化(即使是在開發(fā)流程的后期)。敏捷更注重工作流的簡化和技術(shù)的卓越。對于工作人員,敏捷方法鼓勵(lì)自我組織、個(gè)人激勵(lì)和高效的團(tuán)隊(duì)協(xié)作。簡而言之,敏捷方法強(qiáng)調(diào)人、協(xié)作、快速回應(yīng)和靈活調(diào)整。
Scrum是軟件開發(fā)中應(yīng)用最廣泛的敏捷框架。Scrum基于迭代開發(fā),流程由團(tuán)隊(duì)量身定制,以及在流程框架內(nèi)的持續(xù)改進(jìn)。Scrum團(tuán)隊(duì)中主要的角色有:Scrum Master,負(fù)責(zé)監(jiān)督整個(gè)流程;Product Owner,負(fù)責(zé)產(chǎn)品愿景、優(yōu)先級和利益相關(guān)方的溝通;以及Developers,負(fù)責(zé)實(shí)現(xiàn)每個(gè)sprint中的目標(biāo)。
Scrum的主要工件包括產(chǎn)品待辦列表(Product Backlog)、Sprint待辦列表(Sprint Backlog)以及完成的定義(Definition of Done,DoD)。如下圖所示,Scrum被構(gòu)建為一個(gè)持續(xù)的開發(fā)過程,其中包括多個(gè)小版本的發(fā)布,中間穿插的短的和迭代式的開發(fā)周期,稱為Sprints。

圖1:Scrum中的敏捷實(shí)踐:流程和Sprint
一個(gè)Sprint通常持續(xù)2至4周,具體時(shí)長由團(tuán)隊(duì)根據(jù)需求決定。每一個(gè)Sprint始于計(jì)劃會議,團(tuán)隊(duì)會從產(chǎn)品待辦列表中選擇用戶故事,納入Sprint待辦列表。盡管“產(chǎn)品待辦事項(xiàng)細(xì)化”是持續(xù)進(jìn)行的,但通常會在Sprint前或期間進(jìn)行。每日站立會議(或稱每日Scrum)幫助團(tuán)隊(duì)進(jìn)行同步,討論進(jìn)程,并且解決阻礙。在每個(gè)Sprint結(jié)束時(shí),團(tuán)隊(duì)會與利益相關(guān)方一起組織一次Sprint評審會議,來展示已完成的工作,隨后進(jìn)行Sprint回顧會議,以反思開發(fā)過程,分析下一輪迭代中可以改進(jìn)的地方。
將敏捷與MBD結(jié)合:優(yōu)勢和挑戰(zhàn)
基于模型的開發(fā)(MBD)被認(rèn)為是最先進(jìn)的軟件開發(fā)方法之一。MBD遵循傳統(tǒng)的軟件開發(fā)V-模型(見下圖),在開發(fā)高度復(fù)雜的項(xiàng)目時(shí)尤其實(shí)用。MBD原則強(qiáng)調(diào)迭代開發(fā)、使用統(tǒng)一建模語言、早期質(zhì)量保證(質(zhì)量保證活動前置),以及在整個(gè)開發(fā)生命周期中廣泛應(yīng)用自動化。

圖2:將敏捷原則應(yīng)用在MBD工作流程中的優(yōu)勢
MBD將模型作為核心工件,優(yōu)勢顯著,例如:
值得注意的是,這些關(guān)鍵的MBD特點(diǎn)與敏捷核心原則高度契合,并且能夠無縫集成,從而實(shí)現(xiàn)開發(fā)效率的最大化:
- 跨職能團(tuán)隊(duì)通過模型實(shí)現(xiàn)更高效的溝通。與手寫代碼不同,不僅開發(fā)人員能理解模型,其他相關(guān)人員也能輕松理解
- 借助仿真模擬和質(zhì)量保證前置,實(shí)現(xiàn)盡早且頻繁的測試
- 自動化工具鏈和代碼生成使可持續(xù)交付的軟件成為可能
- 通過應(yīng)用建模規(guī)范和簡化架構(gòu)提升設(shè)計(jì)質(zhì)量
如應(yīng)用得當(dāng),MBD能夠通過縮短回饋周期、提升模型設(shè)計(jì)和促進(jìn)團(tuán)隊(duì)協(xié)作,高效實(shí)現(xiàn)敏捷交付。
基于上述優(yōu)勢,本節(jié)繼續(xù)探究如何高效地在MBD測試流程中實(shí)現(xiàn)敏捷方法。
通過將驗(yàn)證與確認(rèn)(V&V)流程前置,優(yōu)化錯(cuò)誤發(fā)現(xiàn)。如前所述,驗(yàn)證與確認(rèn)活動通常被安排在V模型的右側(cè),接近軟件最終交付的位置。但,這可能導(dǎo)致模型中的錯(cuò)誤和缺陷發(fā)現(xiàn)過晚,且因反饋周期過長而導(dǎo)致效率低下。某些情況下,這種延遲可能導(dǎo)致團(tuán)隊(duì)無法交付真正符合客戶需求的軟件。為了更好地遵循敏捷原則,V&V活動應(yīng)當(dāng)被前置至V模型的左側(cè)。這樣既能保證更短的反饋周期,同時(shí)又可以支持可迭代的開發(fā)流程。開發(fā)人員同樣能從持續(xù)反饋中受益,從結(jié)果中學(xué)習(xí)到更多,并迭代精進(jìn)。
通過完成的定義(DoD)明確“完成的用戶故事”的意義。增量式軟件開發(fā)有助于實(shí)現(xiàn)客戶不斷變化的需求,同時(shí)要求在每一個(gè)增量中實(shí)現(xiàn)質(zhì)量保證。應(yīng)用DoD意味著需要根據(jù)建模規(guī)范驗(yàn)證模型質(zhì)量,且通過對于模型和生成代碼的動態(tài)測試確保功能的正確性。自動化在此處十分重要——諸如MES Model Examiner (MXAM)這樣的工具能夠集成在流程中,有效減輕因質(zhì)量保證活動造成的工作負(fù)擔(dān)。
盡管敏捷方法在MBD中有諸多優(yōu)勢,仍有一些挑戰(zhàn)存在。其中一個(gè)常見問題是:如何實(shí)現(xiàn)與多個(gè)開發(fā)人員在同一個(gè)模型中的協(xié)作。關(guān)鍵的解決方法在于:合理分解模型。通過應(yīng)用庫、引用模型以及子系統(tǒng),團(tuán)隊(duì)能夠簡化并促進(jìn)溝通。另一個(gè)挑戰(zhàn)在于:難以在Git中直觀地比較模型的差異(diff)。為了解決這個(gè)問題,開發(fā)人員可以通過專業(yè)的差異(diff)工具來實(shí)現(xiàn)模型變化的可視化,并判斷適合合并的時(shí)機(jī)。
結(jié)論
傳統(tǒng)的瀑布式軟件開發(fā)流程存在諸多局限,這使得應(yīng)用敏捷原則變得尤為重要,尤其是面對復(fù)雜且不斷變化的開發(fā)環(huán)境時(shí)。作為最高效的軟件開發(fā)方法之一,基于模型的開發(fā)(MBD)具有諸多優(yōu)勢。將敏捷原則融入MBD流程,不僅能幫助開發(fā)團(tuán)隊(duì)實(shí)現(xiàn)更短的反饋周期,更支持增量式開發(fā),并最終交付更貼近客戶不斷變化需求的高質(zhì)量最終產(chǎn)品。
文章內(nèi)容來源:MES模賽思官方網(wǎng)站
-
嵌入式
+關(guān)注
關(guān)注
5150文章
19665瀏覽量
317456 -
軟件開發(fā)
+關(guān)注
關(guān)注
0文章
643瀏覽量
28658 -
敏捷開發(fā)
+關(guān)注
關(guān)注
0文章
10瀏覽量
2573
發(fā)布評論請先 登錄
【《軟件開發(fā)珠璣》閱讀體驗(yàn)】+ 心得
學(xué)嵌入式軟件開發(fā)需要些什么知識?
轉(zhuǎn):軟件工程的變遷
嵌入式軟件開發(fā)需要學(xué)習(xí)哪些知識點(diǎn)
基于模型的嵌入式軟件開發(fā)設(shè)計(jì)
基于改進(jìn)微軟過程模型的大輸液MES軟件開發(fā)方法

教學(xué)軟件開發(fā)模型探討設(shè)計(jì)

三種迭代軟件開發(fā)模型的主要重點(diǎn)
嵌入式軟件開發(fā)常用的開發(fā)模型介紹

嵌入式軟件開發(fā)需要學(xué)習(xí)的知識點(diǎn)

一種結(jié)合敏捷方法和V模型的汽車軟件開發(fā)方法
從敏捷到DevOps的演變?nèi)绾渭铀?b class='flag-5'>軟件開發(fā)
持續(xù)集成和持續(xù)部署助于敏捷開發(fā)概念的出現(xiàn)
軟件開發(fā)的流程和方法有哪些?

評論