軟體工程師必知的9條黃金定律

碼農談IT發表於2023-04-26

來源:熵減駭客

在軟體工程中,由於是涉及到複雜系統的設計、開發和演進的領域,所以,行業內先行的大師們,根據自身的經驗和知識的洞見,總結和沉澱出來不少的定律和原則,被用來指導我們日常的軟體開發中的決策和行為。

這些定律和原則,都是經過經過長期實踐和研究得出的,所以也就具有廣泛的適用性和指導意義。

在過去的一段時間內,我們分享了9個常見基本定律,今天做一個總體性的概覽。具體內容如下:

1康威定律

康威定律是由梅爾文·康威於1968年提出的。

其指出:一個組織的設計結構會自然而然地反映在他們所設計的產品之中。 

這意味著,如果一個組織的設計結構是分散的,那麼它所設計的產品也可能是分散的,而如果一個組織的設計結構是集中的,那麼它所設計的產品也可能是集中的。

因此,軟體開發團隊應該考慮到他們的組織結構,以便更好地設計軟體產品。

關於康威定律,具體見:軟體開發中的康威定律

2布魯克定律

布魯克定律是由弗雷德裡克·布魯克斯於1975年提出的。

指出:新增更多的人員到一個已經推遲的專案中,只會使專案進度更加延遲。

這是因為新成員需要時間來適應專案,並且需要進行培訓,這會消耗原來團隊成員的時間和精力。

關於布魯克定律,具體見:軟體開發中的布魯克定律(Brook’s Law)

3霍夫施塔特定律

霍夫施塔特定律是由道格拉斯·霍夫施塔特於1979年提出的。

指出:一個計劃需要的時間總是比預計的時間長,即使你考慮到霍夫斯塔特定律。

這是因為我們傾向於低估任務的難度和所需的時間,而高估我們自己的能力。

關於霍夫施塔特定律,具體見:軟體工程:霍夫施塔特定律

4海勒姆定律

海勒姆定律是Google 工程師 Hyrum Wright提出的。

指出:當你依賴於一個 API 的時候,你實際上也依賴於這個 API 的實現細節。

海勒姆定律強調了開發者應該更加註意 API 的實現細節,因為這些細節可能會影響到你的程式碼在未來的可維護性和穩定性。


關於海勒姆定律,具體見:軟體工程:海勒姆定律(Hyrum’s Law)

5帕金森定律

帕金森定律是由西西里·諾斯利普·帕金森於1955年提出的。

指出:工作會擴張以填滿可用的時間。這意味著,如果給定一個任務的時間越長,完成該任務所需的時間就會越長。

因此,軟體開發團隊應該設定明確的截止日期和時間表,以確保任務按時完成。

關於帕金森定律,具體見:軟體工程:帕金森定律,專案工期的那點事兒

6墨菲定律

墨菲定律是由愛德華·墨菲提出的。

指出:如果一件事情可能會出錯,那麼它就會出錯。

在軟體開發中,這意味著必須預估到可能的錯誤和故障,並採取措施來防止它們的發生。這也強調了軟體測試和質量控制的重要性。

關於墨菲定律,具體見:軟體工程:墨菲定律,潛在問題管理的藝術

7波斯特爾定律

波斯特爾定律是由喬恩·波斯特爾提出的。

指出:傳送方應該傳送儘可能簡單的資訊,而接收方則應該儘可能容忍和理解各種型別的輸入。

在軟體開發中,這意味著應該儘可能簡化和標準化輸入和輸出格式,以提高軟體的互操作性和可移植性。

關於波斯特爾定律,具體見:軟體工程:波斯特爾定律,輸入輸出的平衡之道

8奧卡姆剃刀定律

奧卡姆剃刀定律是一種科學和哲學原則,也適用於軟體工程。

指出:在解釋某個現象或問題時,應當選擇最簡單的解釋或假設,而不是複雜的解釋或假設。

在軟體開發中,這意味著應該儘可能使用簡單的設計和演演算法,以避免複雜性和潛在的錯誤。

關於奧卡姆剃刀定律,具體見:軟體工程:奧卡姆剃刀原則,簡單的意義

9阿姆達爾定律

阿姆達爾定律是由吉恩·阿姆達爾於1967年提出的。

指出:在計算機系統中,一個任務的速度受到其序列部分的限制。

這意味著平行計算只能在一定程度上提高效能,因為一些任務必須順序執行。

在軟體開發中,這意味著必須注意系統的序列部分,以避免效能瓶頸和資源浪費。

關於阿姆達爾定律,具體見:軟體工程:阿姆達爾定律,效能設計和最佳化的指導原則

Part1最後

以上9個定律,是軟體工程中比較常見的定律和決策原則。

作為軟體工程師,瞭解和掌握這些基本的定律和原則,可以幫助我們更好的解決軟體開發中的哪些複雜的問題,做出高質量的設計和決策,能夠採取適當的措施,以交付優秀的產品。

同時,這些基礎的定律和原則,可以作為軟體團隊開展工作的指導性原則,以幫助團隊找到適合自身實際情況的最佳實踐和策略。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024924/viewspace-2948935/,如需轉載,請註明出處,否則將追究法律責任。

相關文章