介紹
本系列文章是 《寶玉-軟體工程之美》的學習筆記。講述了為什麼需要學習軟體工程,並且如何在實際工作中運用到其方法論。按照軟體生命週期包括:規劃,需求分析,設計,編碼,測試,執行維護等六個階段的內容。
本篇文章主要是通過《任正非-全面提升軟體工程能力與實踐,打造可信的高質量產品》的公開信來引出許多我們日常軟體開發中的問題。
專案管理金三角
這三角分別是:
- 時間(多久可以完成)
- 範圍(需要實現多少功能)
- 成本(花多少錢)
這三個要素直接決定了產品的質量(產品的質量,客戶的滿意度)
首先得明白一個最淺顯的道理:想要“多、快、好、省”都佔著,這是不存在的,你只能選兩樣。想要便宜還想要質量好,那就得等;想要快還想要質量好,那就得多花錢;要想便宜做的又快,那就得接受質量差!
軟體架構
- 深刻理解架構的核心要素,基於可信導向來進行架構與設計。
- 架構設計時,讓模組之間做到高內聚,低耦合。
- 注意安全防範,許可權控制做好,暴露出的介面要少,讓攻擊面最小化。
- 重用公共成熟元件和服務,不要浪費時間造輪子。
重構時機
- 沒有萬能的架構,只有適合當時需求、當時技術條件和人員的架構。
- “面對腐壞了的架構,要毫不猶豫的去重構它。”
- 重構,也不要忘記“可信”這個根本目標,“同時主動以可信設計原則為導向。”
安全性
重視安全問題,提高安全意識,從架構設計,程式碼編寫,測試等方方面面去注意。
技術是工具
- “軟體技術是我們打造產品的工具”,技術只是工具。
- 去掉技術鄙視鏈,沒有最好的技術,只有最適合的技術。
- 沒有落後的技術,只有落後的產品。
一致性
我們要遵守過程的一致性。遵守適用的法律法規、遵循業界共識的標準、規範,確保規範到實現的一致性、程式碼到二進位制的一致性。架構要符合架構原則,設計要遵循設計模式,程式碼要符合程式設計規範,最終做到需求與實現一致,達成各項對客戶的承諾。我們只有腳踏實地做好每一步,才能真正打造出可信的高質量產品。
個人習慣
- 重視程式碼質量, 質量並不只是QA的事。
- 時刻考慮重構改進,不要被動的修修補補。
- 遵守軟體工程規範。
- 主動,系統性的去學習提升。
- 團隊或者個人知識庫的共享。
技術和管理的關係
一切工程問題,首先要思考能否通過技術解決,當前技術無法解決的問題,暫時由管理手段代勞,同時不停止尋找技術手段。
我們將全面強化以Committer角色為核心的程式碼稽核和提交機制,程式碼經過更加嚴格和系統的稽核才能合入版本。為此我們將建立一支更高水平的Committer角色群體,負責軟體架構的看護、程式碼的稽核和提交,整體保障合入程式碼的高質量。我們要變革考核機制,要讓架構設計好、程式碼寫得好的人脫穎而出,對程式設計能力不滿足要求的人給予幫助和培訓。但任何人如果編寫的程式碼長時間不能合入版本,將會被團隊拋棄。