北(běi)京軟件(jiàn)公司采用(yòng)持 ε續性交付中的(de)集成問(wèn)題,原≥✔因和(hé)解決方案_北(běi)京軟件(jiàn)開(kāi÷∑π)發公司
發表日(rì)期:2017-04-17 12:06:₩≤α♦14 文(wén)章(zhāng)編輯§←:宜天信達 浏覽次數(shù):
北(běi)京軟件(jiàn)公司采用(yòng)的(de)連續交付是(shì)一(yī)種軟件(jiàn)開($±↓kāi)發規程,軟件(jiàn)始終保持可(kě)釋放(fà∏σng)性。這(zhè)些(xiē)文(wén)獻 包含了(le)如(rú)何采用(yòng)持續交付₹δ>γ的(de)說(shuō)明(míng),但(dàn)在實踐中采用(¶™yòng)是(shì)一(yī)個(gè)挑戰₽£。我們選擇了(le)其中幾個(gè)進行(xíng)進一(yī)步<♦↓分(fēn)析,基于它們包含采用(yòn<♦∞¶g)持續交付的(de)經驗證據,并專注于實踐而不(bù)僅僅是(shì)模₹ ≤©具。我們定性分(fēn)析了(le)選定的(de)文(wé€×n)章(zhāng),并提出了(le)問(w≥©✔©èn)題,原因和(hé)解決方案。問(wè₩™¶ n)題和(hé)解決方案主題合成為(wèi)§π 七個(gè)主題:構建設計(jì),系統設計(jì),集成, 測試,發布,人(rén)力和(hé)組織與資源。
軟件(jiàn)開(kāi)發中集成問(wèn)題
整合主題涵蓋了(le)将源代碼整合到(dào)主線中時(shí)出現(>xiàn)的(de)問(wèn)題。這(zhè)個(←≠☆gè)主題的(de)問(wèn)題在表8中有(yǒu)描♠§δ®述。
這(zhè)個(gè)主題中的(de)所有(yǒu)代碼都(dōu)↓∑♣通(tōng)過報(bào)告的(de)因果關系進行(xíng)β♦連接,見(jiàn)圖。6。有(yǒu)些(xi☆≥ē)人(rén)試圖避免分(fēn)支的(de)整合問(wèn)∞₩∑•題,但(dàn)長(cháng)期以來(lái),實際上(shàn¶☆∏€g)提到(dào)了(le)長(cháng)期的(de)分₩₽(fēn)支機(jī)構,使整合更加麻煩:
随著(zhe)主要(yào)代碼基礎的(de)發♣§≈展,分(fēn)支機(jī)構進一(yī)步遠(yuǎn)離(γ¥™•lí)幹線,使得(de)分(fēn)支機(jī)構較終并入後備©₹箱變得(de)越來(lái)越痛苦和(hé)複雜(zá)。
報(bào)告了(le)集成問(wèn)題與相(xiàng)關測試問(wèn₽ )題之間(jiān)的(de)因果關系。
圖選項
集成主題中的(de)另一(yī)個(gè)有(yǒu)趣的(d§∞×e)特征是(shì)代碼破壞,工(gōng≈×)作(zuò)阻塞和(hé)合并沖突之間(jiān)的(de)惡性循γ♦環。情況強調:一(yī)旦構建中斷,團隊就(jiù)會₹®±↕(huì)遇到(dào)一(yī)種“停電(diàn)"≈”。修複時(shí)間(jiān)越長σ (cháng),修改越困難,将更改合并在一(yī)起。很(hěn)✘♥ 多(duō)時(shí)候,這(zhè)種合并的(de)努力導緻進一'≥&(yī)步的(de)構建中斷等等。
大(dà)提交
較大(dà)的(de)提交是(shì)有(yǒu)問(wèn)題的(deφ↔×),因為(wèi)它們包含多(duō)個(gè)®<可(kě)能(néng)與其他(tā)變更相(xiàng)沖突的(d ♦∞e)更改:
這(zhè)些(xiē)較大(dà)的(de)更改集意☆✔±味著(zhe)在完成登記之前需要(yào)更多(duō)的(de∑♦∑δ)文(wén)件(jiàn)合并,進一(yī¥)步延長(cháng)提交所需的(de)時(shí)間(¶$✘jiān)。
然而,北(běi)京軟件(jiàn)公司開(kāi)發">λ人(rén)員(yuán)大(dà)量提交的(de)原因有(yǒu)♣♠很(hěn)多(duō):耗時(shí)的(de)測試,大(dà)功↓φ∞能(néng),網絡延遲和(hé)緩慢(màn)的(de)集成審≤≠批流程。因此,為(wèi)了(le)處理(lǐ)大(dà)的(de)事(shìφ®↕™)情,必須考慮到(dào)這(zhè)些(xiē)根δ <本原因。
合并沖突
合并沖突發生(shēng)在不(bù)同開(kāi)發者所做(zuò§Ωσ↓)的(de)更改沖突時(shí)。解決這(zhè)樣的(de)沖突可(kě)←"Ωε以付出巨大(dà)的(de)努力:
我們感覺到(dào)長(cháng)時(shíγσ)間(jiān)運行(xíng)的(de)分(fφ☆•ēn)支機(jī)構合并了(le)太多(duō)次的(de)₹★痛苦。合并沖突可(kě)能(néng)需要(yào)幾個(±↕δ↔gè)小(xiǎo)時(shí)才能(néng)解決©₩γ,而且很(hěn)容易意外(wài)中斷代碼庫。
合并沖突可(kě)能(néng)由長(cháng)時(shí)間(jiān¥λ)運行(xíng)的(de)分(fēn)支或大(↓§↕<dà)提交引起。延遲執行(xíng)過程,如(rú)冗長₹φγ∑(cháng)的(de)代碼審查也(yě)可(kě)能(n≠☆•♥éng)導緻合并沖突[C21]。在某些(xiē)$•÷≠情況下(xià),合并沖突可(kě)能(n€©♠λéng)更少(shǎo):如(rú)果軟件(jiàφγ>n)開(kāi)發人(rén)員(yuán)在源代碼的(d€ e)不(bù)同部分(fēn)工(gōng)作(zuò)π,或者有(yǒu)少(shǎo)量軟件(jiàn)開(kā≤σi)發人(rén)員(yuán)。
軟件(jiàn)開(kāi)發中集成問(wèn)題
問(wèn)題 | 描述 |
---|---|
大(dà)提交 | 提交包含大(dà)量更改。 |
合并沖突 | 将更改合并顯示更改之間(jiān'©☆∏)的(de)沖突。 |
破碎的(de)建造 | 建築物(wù)長(cháng)時(shí)間(jiān)斷裂或經常斷☆☆ ∏裂。 |
工(gōng)作(zuò)堵塞 | 完成工(gōng)作(zuò)任務由于隊列中的(de)構建✘"α✘或其他(tā)集成被破壞或阻止。 |
長(cháng)跑分(fēn)支 | 代碼在分(fēn)支機(jī)構開( ♦kāi)發,持續時(shí)間(jiān)長(cháng)。 |
破碎的(de)開(kāi)發流程 | 開(kāi)發人(rén)員(yuá £₽n)分(fēn)心,發展的(de)流程突破 ★。 |
緩慢(màn)整合批準 | 更改被批準緩慢(màn)的(de)主線。 |
這(zhè)個(gè)主題中的(de)所有(yǒu)代碼都(dōu)↓∑♣通(tōng)過報(bào)告的(de)因果關系進行(xíng)β♦連接,見(jiàn)圖。6。有(yǒu)些(xi☆≥ē)人(rén)試圖避免分(fēn)支的(de)整合問(wèn)∞₩∑•題,但(dàn)長(cháng)期以來(lái),實際上(shàn¶☆∏€g)提到(dào)了(le)長(cháng)期的(de)分₩₽(fēn)支機(jī)構,使整合更加麻煩:
随著(zhe)主要(yào)代碼基礎的(de)發♣§≈展,分(fēn)支機(jī)構進一(yī)步遠(yuǎn)離(γ¥™•lí)幹線,使得(de)分(fēn)支機(jī)構較終并入後備©₹箱變得(de)越來(lái)越痛苦和(hé)複雜(zá)。
報(bào)告了(le)集成問(wèn)題與相(xiàng)關測試問(wèn₽ )題之間(jiān)的(de)因果關系。
圖選項
集成主題中的(de)另一(yī)個(gè)有(yǒu)趣的(d§∞×e)特征是(shì)代碼破壞,工(gōng≈×)作(zuò)阻塞和(hé)合并沖突之間(jiān)的(de)惡性循γ♦環。情況強調:一(yī)旦構建中斷,團隊就(jiù)會₹®±↕(huì)遇到(dào)一(yī)種“停電(diàn)"≈”。修複時(shí)間(jiān)越長σ (cháng),修改越困難,将更改合并在一(yī)起。很(hěn)✘♥ 多(duō)時(shí)候,這(zhè)種合并的(de)努力導緻進一'≥&(yī)步的(de)構建中斷等等。
大(dà)提交
較大(dà)的(de)提交是(shì)有(yǒu)問(wèn)題的(deφ↔×),因為(wèi)它們包含多(duō)個(gè)®<可(kě)能(néng)與其他(tā)變更相(xiàng)沖突的(d ♦∞e)更改:
這(zhè)些(xiē)較大(dà)的(de)更改集意☆✔±味著(zhe)在完成登記之前需要(yào)更多(duō)的(de∑♦∑δ)文(wén)件(jiàn)合并,進一(yī¥)步延長(cháng)提交所需的(de)時(shí)間(¶$✘jiān)。
然而,北(běi)京軟件(jiàn)公司開(kāi)發">λ人(rén)員(yuán)大(dà)量提交的(de)原因有(yǒu)♣♠很(hěn)多(duō):耗時(shí)的(de)測試,大(dà)功↓φ∞能(néng),網絡延遲和(hé)緩慢(màn)的(de)集成審≤≠批流程。因此,為(wèi)了(le)處理(lǐ)大(dà)的(de)事(shìφ®↕™)情,必須考慮到(dào)這(zhè)些(xiē)根δ <本原因。
合并沖突
合并沖突發生(shēng)在不(bù)同開(kāi)發者所做(zuò§Ωσ↓)的(de)更改沖突時(shí)。解決這(zhè)樣的(de)沖突可(kě)←"Ωε以付出巨大(dà)的(de)努力:
我們感覺到(dào)長(cháng)時(shíγσ)間(jiān)運行(xíng)的(de)分(fφ☆•ēn)支機(jī)構合并了(le)太多(duō)次的(de)₹★痛苦。合并沖突可(kě)能(néng)需要(yào)幾個(±↕δ↔gè)小(xiǎo)時(shí)才能(néng)解決©₩γ,而且很(hěn)容易意外(wài)中斷代碼庫。
合并沖突可(kě)能(néng)由長(cháng)時(shí)間(jiān¥λ)運行(xíng)的(de)分(fēn)支或大(↓§↕<dà)提交引起。延遲執行(xíng)過程,如(rú)冗長₹φγ∑(cháng)的(de)代碼審查也(yě)可(kě)能(n≠☆•♥éng)導緻合并沖突[C21]。在某些(xiē)$•÷≠情況下(xià),合并沖突可(kě)能(n€©♠λéng)更少(shǎo):如(rú)果軟件(jiàφγ>n)開(kāi)發人(rén)員(yuán)在源代碼的(d€ e)不(bù)同部分(fēn)工(gōng)作(zuò)π,或者有(yǒu)少(shǎo)量軟件(jiàn)開(kā≤σi)發人(rén)員(yuán)。