軟件高效交付10大策略解讀——小批量持續(xù)流動(dòng)博文視點(diǎn)Broadview關(guān)注共 2323字,需瀏覽 5分鐘 ·2022-05-09 20:00 軟件交付過程是指在編程序改代碼之后的一系列活動(dòng),如提交、集成、構(gòu)建、部署、測(cè)試等,直到將軟件發(fā)布給用戶使用。我們大致梳理了軟件開發(fā) “從古至今”的思潮、運(yùn)動(dòng)、方法、實(shí)踐,從軟件工程到 DevOps,再到研發(fā)效能,它們之間有演進(jìn)、有糾偏、有補(bǔ)充,也有大量的交疊。做這樣的梳理,是為了能夠融會(huì)貫通,以便綜合運(yùn)用。本系列文章就來(lái)看看對(duì)它們做到融會(huì)貫通以后,提煉出來(lái)的軟件高效交付的10大策略。本文先來(lái)解讀其中的第一個(gè)策略:小批量持續(xù)流動(dòng)。軟件交付過程要追求快,從改一行代碼到把它發(fā)布上線,都要盡量快。因?yàn)閺拇_定需求到設(shè)計(jì)開發(fā)再到發(fā)布上線的整個(gè)流程,就是要盡量快。那么如何做到呢?一個(gè)重要的策略就是不要等待,小批量持續(xù)流動(dòng)。大批量帶來(lái)的等待問題觀察瀑布模式中的等待:由于大批需求被一起規(guī)劃設(shè)計(jì),所以盡管每個(gè)需求可能只需要不多的設(shè)計(jì)時(shí)間,但是需要等待所有的需求都被設(shè)計(jì)好后才能開始實(shí)現(xiàn)。大批需求帶來(lái)很大的開發(fā)工作量,在實(shí)現(xiàn)某一個(gè)具體小功能時(shí),可能只需要不多的時(shí)間,但需要等待所有的功能都實(shí)現(xiàn)后,才能進(jìn)行集成。大量的軟件改動(dòng)帶來(lái)繁重的集成工作,如果到項(xiàng)目后期才集成和測(cè)試,那么就要等問題一個(gè)個(gè)冒出來(lái)并被解決掉,說不定還需要多輪測(cè)試。總之,對(duì)于軟件的一點(diǎn)改動(dòng),花在它本身的功能設(shè)計(jì)、代碼實(shí)現(xiàn)、質(zhì)量保證上的時(shí)間可能并不多,但是由于總是需要湊齊足夠的需求才能往下推進(jìn)流程,所以等待的時(shí)間就會(huì)很漫長(zhǎng)。最后的效果就是從確定需求到發(fā)布上線的整個(gè)流程,很慢。具體到《軟件交付通識(shí)》這本書關(guān)注的軟件交付過程,也是很慢的。當(dāng)總是需要湊齊需求時(shí),還會(huì)帶來(lái)一些連鎖反應(yīng),讓流程變得更慢。其中最明顯的問題是,修復(fù)一個(gè)Bug所花費(fèi)的時(shí)間變長(zhǎng)了。比如你改了幾行代碼,當(dāng)時(shí)就得到了反饋,提示寫得有問題,那么你自然就只需要在那幾行代碼中排查。那幾行代碼又是剛寫的,記憶還新鮮,很快就能找出原因并改正。但是,如果過了很久才得到反饋,那么你就不知道問題是具體哪個(gè)地方的改動(dòng)引起的,從而導(dǎo)致排查困難。而且那段程序的結(jié)構(gòu)和邏輯,你可能也記不清了,又要重新熟悉,重新進(jìn)入狀態(tài)。短周期、小顆粒度、減少半成品才是王道這么看來(lái),等待真不是一件好事兒,要盡量避免。如何避免呢?別湊一大批!也就是說,要在各個(gè)方面追求小批量:小批量的設(shè)計(jì)功能、交代開發(fā)任務(wù),小批量的集成,小批量的測(cè)試,小批量的發(fā)布。這樣就有可能讓整個(gè)流程持續(xù)地流動(dòng)起來(lái),而不是走走停停。瀑布模式顯然違背了這一策略,導(dǎo)致了漫長(zhǎng)的交付周期。而如果將四周甚至兩周作為一個(gè)迭代周期的話,相比之下就好得多。然而這并不是終點(diǎn),它可以更好:一方面,迭代可以一直延伸到上線,而不是止步于內(nèi)部演示版本,上線才是真正的Done;另一方面,一次迭代包含了多個(gè)需求,它們之間還是會(huì)相互等待、相互影響的。所以,更理想的情況是每個(gè)需求都可以在精益看板墻上不受干擾自主地往前走:開發(fā)、測(cè)試直到發(fā)布。也就是說,想改就改、想測(cè)就測(cè)、想發(fā)就發(fā)。這里需求的顆粒度也有講究,不要太大。所以在精益需求分析與管理實(shí)踐中,要做需求拆分:將大需求拆分成小需求,可以分別獨(dú)立開發(fā)和發(fā)布上線。這也符合小批量的原則。在精益方法中還提到了控制在制品數(shù)量,因?yàn)樵谥破窋?shù)量大意味著排隊(duì)等待時(shí)間長(zhǎng),也意味著一個(gè)人可能要并行處理多件事情,需要頻繁切換。控制在制品數(shù)量,也符合持續(xù)流動(dòng)這個(gè)原則。小批量持續(xù)流動(dòng)的交付過程以上是從敏捷和精益的視角來(lái)看小批量持續(xù)流動(dòng)這個(gè)策略的。下面我們來(lái)看看持續(xù)集成、持續(xù)交付是如何踐行小批量持續(xù)流動(dòng)這個(gè)策略的。持續(xù)集成意味著代碼改動(dòng)要及早和經(jīng)常提交與合并,這樣有利于減少合并沖突和錯(cuò)誤,并且在彼此工作有依賴時(shí),能及時(shí)獲取到別人的改動(dòng),及早開工。持續(xù)集成還意味著及早和經(jīng)常構(gòu)建與測(cè)試。一旦收到提交的代碼,就自動(dòng)進(jìn)行構(gòu)建、靜態(tài)代碼分析、單元測(cè)試等工作,以便盡早發(fā)現(xiàn)問題,而不是非要湊齊再開始。顯然,這也符合小批量持續(xù)流動(dòng)的原則。持續(xù)交付更進(jìn)一步,把及早和經(jīng)常做的事情擴(kuò)展到了部署到測(cè)試環(huán)境并測(cè)試,甚至擴(kuò)展到了及早和經(jīng)常發(fā)布上線。可見,敏捷、精益、持續(xù)集成、持續(xù)交付,它們都反映了這個(gè)重要的策略:小批量持續(xù)流動(dòng)。以上講的是大的方面。根據(jù)小批量持續(xù)流動(dòng)這個(gè)原則,在集成發(fā)布階段還有不少細(xì)節(jié)值得注意。比如發(fā)布窗口應(yīng)當(dāng)盡量去掉,做到無(wú)須等待、隨時(shí)發(fā)布。推薦閱讀董越老師的新書《軟件交付通識(shí)》從頭到尾梳理了軟件交付過程(也就是從改了一行代碼到它發(fā)布上線的過程),分門別類地講解了流程各個(gè)階段的各個(gè)要點(diǎn),以及流程中各個(gè)活動(dòng)的各個(gè)要點(diǎn)。軟件高效交付的10個(gè)策略更是這本書中的核心觀點(diǎn)和內(nèi)容,如果你想快速通讀所有10個(gè)策略,請(qǐng)關(guān)注這本不容錯(cuò)過的好書。作者簡(jiǎn)介:董越,DevOps 資深專家,阿里巴巴集團(tuán)前研發(fā)效能事業(yè)部架構(gòu)、高級(jí)產(chǎn)品專家等職,從事 Aone&云效 DevOps 產(chǎn)品設(shè)計(jì)、阿里云專有云集成與交付解決方案設(shè)計(jì)等工作。在加入阿里之前,他還曾就職于西門子、摩托羅拉、雅虎、索尼、去哪兒網(wǎng)等大型企業(yè),一直從事軟件配置管理、軟件集成與交付、DevOps 相關(guān)的工作。當(dāng)前主要從事企業(yè)級(jí)DevOps體系建設(shè)與咨詢工作,幫助眾多企業(yè)提升軟件研發(fā)交付效能。已服務(wù)過的客戶有華為、工商銀行、交通銀行、招商銀行、中信銀行、中國(guó)移動(dòng)、中國(guó)聯(lián)通、中國(guó)電信、華泰證券、泰康人壽等。?如果喜歡本文歡迎?在看丨留言丨分享至朋友圈?三連?熱文推薦??解密支付系統(tǒng),來(lái)看如何構(gòu)建理想的支付系統(tǒng)架構(gòu)手把手帶你用Zabbix進(jìn)行操作系統(tǒng)監(jiān)控掌握這些Python的高級(jí)用法,讓代碼更可讀、運(yùn)行更高效!書單 | 這幾本技術(shù)類新書,看完要登峰造極了!▼點(diǎn)擊閱讀原文,了解本書詳情~ 瀏覽 21點(diǎn)贊 評(píng)論 收藏 分享 手機(jī)掃一掃分享分享 舉報(bào) 評(píng)論圖片表情視頻評(píng)價(jià)全部評(píng)論推薦 持續(xù)交付2.0持續(xù)交付2.00持續(xù)交付2.0本書重新定義了“持續(xù)交付”,增補(bǔ)了組織管理和系統(tǒng)架構(gòu)兩個(gè)維度,并輔助以真實(shí)案例,對(duì)諸多持續(xù)交付原則與高效持續(xù)測(cè)試策略的4個(gè)要素軟件測(cè)試test0持續(xù)交付 : 發(fā)布可靠軟件的系統(tǒng)Jez Humble編著的《持續(xù)交付(發(fā)布可靠軟件的系統(tǒng)方法)》講述如何實(shí)現(xiàn)更快、更可靠、低成本的自持續(xù)交付 : 發(fā)布可靠軟件的系統(tǒng)持續(xù)交付 : 發(fā)布可靠軟件的系統(tǒng)0持續(xù)交付的本質(zhì)春哥叨叨0一文教你分清持續(xù)集成,持續(xù)交付,持續(xù)部署!測(cè)試開發(fā)技術(shù)0Screwdriver持續(xù)交付構(gòu)建系統(tǒng)Screwdriver是?Yahoo開源的持續(xù)交付構(gòu)建系統(tǒng),Screwdriver的一些關(guān)鍵設(shè)計(jì)功能幫助Yahoo實(shí)現(xiàn)了大規(guī)模持續(xù)交付能力。從宏觀看,這些關(guān)鍵設(shè)計(jì)是:使部署管道容易優(yōu)化主干開發(fā)使回滾容Screwdriver持續(xù)交付構(gòu)建系統(tǒng)Screwdriver 是?Yahoo 開源的持續(xù)交付構(gòu)建系統(tǒng),Screwdriver 的一些關(guān)鍵設(shè)聊聊持續(xù)交付這點(diǎn)事兒架構(gòu)師修行之路0點(diǎn)贊 評(píng)論 收藏 分享 手機(jī)掃一掃分享分享 舉報(bào)