軟體工程師必知的9條黃金定律
來源:熵減駭客
在軟體工程中,由於是涉及到複雜系統的設計、開發和演進的領域,所以,行業內先行的大師們,根據自身的經驗和知識的洞見,總結和沉澱出來不少的定律和原則,被用來指導我們日常的軟體開發中的決策和行為。
這些定律和原則,都是經過經過長期實踐和研究得出的,所以也就具有廣泛的適用性和指導意義。
在過去的一段時間內,我們分享了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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 網路安全工程師必知的新型惡意軟體!工程師
- iOS工程師Mac上的必備軟體iOS工程師Mac
- 軟體工程師必讀的13本書軟體工程工程師
- JAVA程式設計師“黃金5年”必須要掌握的知識技能Java程式設計師
- 軟體設計師:軟體工程基礎知識軟體工程
- 軟體工程師必須知道20個知識點你瞭解多少?軟體工程工程師
- Keras作者:給軟體開發者的33條黃金法則Keras
- 軟體測試工程師必會的面試題目工程師面試題
- 前端工程師必知之Promise的實現前端工程師Promise
- 【招聘】前端軟體工程師、高階前端軟體工程師前端軟體工程工程師
- 軟體工程:帕金森定律,專案工期的那點事兒軟體工程
- 軟體工程:波斯特爾定律,輸入輸出的平衡之道軟體工程
- 軟體工程:墨菲定律,潛在問題管理的藝術軟體工程
- 譯:軟體工程師的軟技能(一)軟體工程工程師
- 要做軟體工程師,而不是前端工程師軟體工程工程師前端
- JVM-Java工程師必須掌握的知識點JVMJava工程師
- 軟體開發定律:布魯克定律
- 怎樣如軟體工程師一樣組織知識軟體工程工程師
- 依賴——軟體工程師的痛軟體工程工程師
- 軟體工程師前景分析軟體工程工程師
- [ 招聘 | 上海 ] 軟體工程師 / 全棧工程師 / 晶片設計工程師軟體工程工程師全棧晶片
- 【java工程師必知必會】spring防重複提交AOP方式Java工程師Spring
- 滲透測試工程師必知的漏洞掃描工具!工程師
- 測試工程師必知的10大測試法則工程師
- Python工程師求職必知的經典面試題!Python工程師求職面試題
- Python工程師求職必知的經典面試題Python工程師求職面試題
- Web前端工程的裝機必備軟體Web前端
- 趣頭條 架構部 急招 中介軟體研發工程師/架構師架構工程師
- 優秀的DevOps工程師必須具備的軟技能dev工程師
- 客服系統的七條黃金法則
- 如何以軟體工程師的身份工作?軟體工程工程師
- 軟體測試工程師的技能樹工程師
- 軟體測試工程師的尷尬工程師
- 軟體測試工程師的職責工程師
- Web前端開發工程師必須瞭解的HTTP知識Web前端工程師HTTP
- 選擇遠端辦公軟體的黃金法則
- [上海&EDA]持續招聘晶片設計工程師 | 全棧工程師 | 軟體工程師 | 嵌入式軟體工程師 // 年薪30W+起晶片工程師全棧軟體工程
- 漫談測試人生:軟體測試的墨菲定律、二八定律和木桶定律…