軟體專案的鐵三角模型:軟體質量與快速開發的矛盾 - Richard
在“鐵三角”模型中,有 3 個約束條件:
- 資源Resource:有多少人投入
- 範圍Scope:需要完成多少工作
- 時間Time:完成工作的時間
它們形成了一個三角形,三角形的面積代表質量。
如果您曾經聽過人們談論“遺留程式碼”、“技術債務”等,那麼您現在可能已經發現這個模型在起作用!質量和速度的關係沒那麼簡單!不是簡單認為:質量越高,速度越快,這是一種二分法的極端概念,高質量不代表高效高速,如果我們在短期內犧牲質量,就會損害速度?
平衡質量和速度並非易事 如果我們花大量時間尋求質量,一切都需要更長的時間,我們會失去速度;但是如果我們不主動嘗試保持高質量,那麼複雜性就會接管,一切又需要更長的時間,我們又失去速度。
同時,我們正在企業中構建軟體。這意味著時間和金錢很重要!軟體進展緩慢對企業來說是毀滅性的,顯然需要緊急解決!
新增資源既昂貴又困難;此外,我們知道布魯克斯的定律:“在一個遲到的專案中增加更多的人會使其晚一些”——所以這可能不是一個選擇。
大多數企業自以為自己“掌握”“需求”,因此將範圍縮小排除在質量與速度之間。。。這就造成複雜性的原因!
當然,對於短期的速度提升,我們可以在質量上偷工減料……但這會很快導致更多的複雜性、錯誤、返工和其他壞事,這會損害速度。
如果事情變得非常糟糕,最可能的答案是“重新編寫”……讓我們重新開始,不要犯同樣的錯誤……這次我們將真正專注於質量!所以新專案開始了,每個人都非常樂觀。讓我們引入儘可能多的質量工具!單元測試、整合測試、TDD、BDD、沒有空值的外來新語言……當然還有行業標準,Pull Requests - 一切為了質量!
需要明確的是,其中許多都是提高質量的好工具,一個能夠及早快速檢測問題的良好測試套件非常有價值。你可能應該確保你有很好的測試!但問題是,擁有所有這些東西會讓你慢下來......
如果你進展緩慢,在一個時間和金錢都很重要的企業中,那是行不通的……如果你進展緩慢,管理者必須參與,不參與是不負責任的。我們又回到了質量與速度的較量——你需要走得更快……
顯然,我們需要在不損害速度的情況下儘可能提高質量,同時在不損害質量的情況下儘可能提高速度。
這意味著批判性地看待每個工具,並誠實地瞭解它帶來的好處以及這些好處的成本。一些工具——例如自動化測試——非常強大,但非常昂貴,所以也許我們會謹慎使用它們(想想“測試金字塔”)
Pull Requests拉取請求
最無法通過平衡測試的工具是 Pull Requests拉取請求。這有很多原因,即“物理定律”的東西,同時又是 PR 設計的內在因素,因此是不可避免的。
拉取請求的“作用機制”是讓多人看到每個更改,以捕獲並解決Bug。
拉取請求客觀地產生很多額外開銷:
- - 增加中斷和上下文切換
- - 引入阻塞、瓶頸、爭用和等待
- - 增加在製品和批量大小
- - 延遲缺陷檢測並增加返工
這些都是導致損害速度的最明顯的問題。拉取請求被提升為幫助提升質量的工具。但是,拉取請求會損害速度。當速度受損時,團隊會面臨時間壓力。當有時間壓力時,人們更可能匆忙,質量受到損害。
Pull Requests 的好處是:多個人在做同一件事——協作。然而,Pull Requests 是一種非常間接的協作形式!如果您重視 Pull Requests 的好處,您可能想看看有沒有其他其他協作機制!
將“範圍”作為常量的問題
傳統觀點是:鐵三角中範圍(需要完成多少工作)幾乎總是更像是一個常數,是團隊的上文,而不是團隊可以對其產生任何影響的變數,是一個前提假設,但是挑戰這個假設為我帶來了巨大的突破。
到目前為止,我看到的最常見的對付"範圍"方法是團隊有一組“ticket票”,並且一次只做一些,或者更有可能同時做幾張票。它們被視為原子,無論是“完成”還是“未完成”,而遊戲就是儘可能多地“做”。
計劃通常是通過“估計”每個原子票需要多長時間來完成的,可能是抽象的形式,例如故事點,但票的內容同樣被視為固定的。
問題在於,這種“估計”是建立在理論之上的,然後再受制於往往殘酷的現實世界。有時會出現不可預見的問題,這意味著完成一項任務需要更長的時間。
我們還需要注意帕金森定律——“工作會擴大,以填補完成它的可用時間”——這意味著雖然有時事情會比預期的要長得多,但事情花費的時間卻少得多。 . 這是一個偏態分佈!
讓我們也瞭解一下 侯世達(Hofstadter)定律:“做事所花費的時間總是比你預期的要長,即使你的預期中考慮了侯世達定律。” 如果您希望新增“緩衝區”可以拯救您,對不起...
範圍作為變數
那麼,我們如何才能可靠地交付進展?會有很多解決方案,但以下是對我有用的方法...
- 不要以完成為目標,以更好為目標
不要問多長時間,設定固定時間預算並尋找最佳花費方式
也就是說,使用“範圍”作為變數,
您可以向需要看到可預測進展的企業承諾,您將分享自上次以來取得的進展的確切時間。你可以對事情的進展完全透明,如果遇到問題,你可以一起做出選擇。
現在不再是“嘗試做很多工作”,而是“嘗試從固定的工作量中做出最大的改變”。這意味著使用帕累託(80:20 規則),並尋找最具影響力的改進!
在實踐中會發生的情況是,一開始,您將能夠做出重大改進,然後會出現收益遞減的情況。這時問題應該是“我們下一步應該改進什麼”?
在每個固定的時間週期內,您決定要改進什麼,並嘗試做出最大的改進。有時它會很順利,有時不會那麼順利。您可以從中吸取教訓,並將反饋包含在下次的決策中。
能夠快速改變方向......我們有一個詞.:敏捷
總結
所以,總結一下: - 質量與速度是一場失敗的遊戲
- - 不要玩!
- - 平衡是關鍵
- - 關鍵,尋找成本/收益
- - 請記住,在業務中,時間和金錢很重要(!),並且往往會在衝突中獲勝
- - 進展很重要
- - 專注於穩定改進,儘早交付
相關文章
- 軟體專案管理 8.4.軟體專案質量計劃專案管理
- 軟體專案管理 8.1.軟體質量基本概念專案管理
- 關於軟體專案開發的分析與設計
- 軟體專案管理 8.3.敏捷專案質量活動專案管理敏捷
- 軟體測試——軟體安全質量的保證
- 軟體開發,如何快速有效縮短專案週期
- 敏捷開發專案管理軟體敏捷專案管理
- 熟悉一個“高質量”軟體的開發過程
- PDCA迴圈——快速提升軟體質量的必備工具
- 專案管理軟體三要素:時間、質量、成本專案管理
- 軟體測試對軟體質量的影響有那些?
- 分析如何使用專案管理軟體管理軟體開發團隊專案管理
- 軟體開發公司的專案管理怎麼做專案管理
- 軟體快速開發平臺的優勢
- 軟體測試中影響軟體需求質量的因素有哪些?
- 如何避免軟體開發專案中的需求管理陷阱?
- 淺析軟體開發專案的前期溝通工作
- 專案管理軟體的春天專案管理
- 開源的NAS軟體專案儲存
- 思泉軟體開發平臺與傳統軟體開發的優勢
- 軟體工程課程專案“物品復活“軟體開發v1.0軟體工程
- Simulink模型指標分析與模型重構的最佳實踐 - 軟體模型質量保證重要環節模型指標
- 基於快速失敗的軟體開發 - levelup
- 20100420專案管理沙龍專題:軟體工程在軟體專案中的位置專案管理軟體工程
- 軟體專案管理 7.5.專案進度模型(SPSP)專案管理模型
- 與眾不同的快速開發平臺 —— 簡潔高效的wueasy軟體
- 幾種常見的軟體開發模型分析模型
- 方案:軟體質量保證
- 如何保證軟體質量
- Facebook如何提高軟體質量
- 軟體測試學習教程—軟體測試質量
- 軟體測試對軟體質量有哪些影響?
- 2022國產敏捷開發專案管理軟體敏捷專案管理
- Linux已成為世界最大軟體開發專案Linux
- 軟體產品質量如何提升?專業軟體測試公司幫您解決
- 開源專案管理軟體有哪些?分享7個實用開源專案管理軟體專案管理
- 分析IT軟體研發公司用什麼專案管理軟體好?專案管理
- 軟體開發:app軟體開發,pc端軟體開發,微商城/小程式開發APP