前言:
對非軟體領域的其他領域[比如化工、船舶等等]的工程項目有瞭解的人,應該都知道:工程規模擴大,其他相應的人力成本,過程計算,工程周期等等並不是線形關係。更經常地,您會發現,有時候小工程和大工程適用的科學理論體系都是不同的。
依據小工程的經驗判斷大工程問題是單純的幻想,那麼,軟體領域又有哪些值得注意或者有趣的規律呢?
軟體規模和溝通交流的關係
多人項目潛在的交流途徑為 N(N-1)/2 個。比如N=10,潛在交流途徑則為45個。
交流的途徑越多,消耗的時間也就越多,交流出錯的可能性就越大。
改善途徑:
在可能的情況下,分解項目團隊的規模。
閱讀和撰寫文檔是減少交流次數的有效方法之一。
軟體規模和BUG的關係
軟體規模既影響BUG的數量,也影響BUG的類型。
小的軟體項目中,對品質影響最大的是開發人員的技能。
越大的軟體項目中,需求和架構的錯誤對品質的影響逐步加大。但無論多麼大型的項目,開發人員帶來的問題依然超過問題總數的50%以上。
在其他條件都相等的時候,大的軟體項目生產率低於小的軟體項目
項目大小[程式碼] |
每人年的程式碼數[括弧裡是cocomo II均值] |
1K |
2500 - 25000 [4000] |
10K |
2000 - 25000 [3200] |
100K |
1000 - 20000 [2600] |
1000K |
700 - 10000 [2000] |
10000K |
300 - 5000 [1600] |
在其他條件都相等的時候,大的軟體項目BUG率高於小的軟體項目
項目大小[程式碼] |
典型的BUG密度[千行BUG數] |
< 2000 |
0-25 |
2000 - 16000 |
0-40 |
16000 - 64000 |
0.5 - 50 |
64000 - 512000 |
2 - 70 |
> 512000 |
4 - 100 |
放大輕量級的方法論要好過縮小重量級的方法論
隨著項目規模的增加,工作量超過線形增長的活動有:
交流
計劃
管理
需求分析
系統功能設計
介面設計和規格說明
架構
整合
消除缺陷
系統測試
文檔產生
此外,其它活動基本還是線形的。