軟件架構設計培訓我學到了什麼?

新的思想永遠是我們要追求的,可謂朝聞道,夕死可矣

培訓主要內容:

  • 架構設計思路
  • 模塊化、分層的設計思想
  • 架構設計文檔
  • 自動化測試

工作的改進:

模塊化分層設計

模塊設計

模塊化設計的目的就是提高移植性、複用性、可擴展……所以模塊內部遵循高內聚原則,模塊之間遵循低耦合原則。 模塊設計就是要對其他模塊高度隱藏內部數據和細節,即滿足最少知道原則(盡少的實體之間的信息交互)。模塊內用到的頭文件寫在private中,模塊外需要的寫在public中;

設計優良的模塊接口需要進行合理層次的抽象,並放在合理位置;通過ID參數留可擴展餘量。

少用全局變量,因爲全局變量的使用讓代碼閱讀難度加大,增加耦合性,可以通過static、指針、結構體、Get()、Set()、限制使用範圍(Private)等方式避免全局變量的使用。

分層設計

優良的嵌入式軟件分層設計是上層嚴格依賴底層,並消滅循環依賴。

工作改進

我們自己5116目前的模塊化分層設計有些地方還可以改進。比如card 驅動的文件組織可謂嚴重的重複設計,cardbase和norbase,慢速驅動、快速驅動文件混雜在了一起,應提取公共部分再放合理位置;上層任意調用寄存器及影響了可閱讀性,也不負責低耦合的要求;key驅動功能過於複雜,不符合一個包只做一類事情的原則,需要進行合理拆分;

設計文檔

開發視圖和邏輯視圖

架構設計中最重要的是開發視圖和邏輯視圖,這讓開發人員很快的熟悉架構與數據流,同時也較容易檢查我們的架構設計是否存在循環依賴,這兩個視圖需要補充

設計合理的文檔

能用代碼直接表達的不寫在文檔中,不能過度設計,否則文檔更新起來會很喫力

高度同步的文檔

保持代碼和文檔的一致,設計文檔需要主人,保證文檔一直有負責人,沒有負責人的文檔很難保證及時更新,會誤導研發人員,浪費人力。

標準化

標準的接口

許多接口在業界都已經有了標準化的實現,命名,傳參,返回值,例如C標準庫,而且這些標準都是經驗的精華,已經經過反覆驗證的優良接口;並且有利於提高可讀性和複用性

標準的錯誤碼

標準的錯誤碼、錯誤等級劃分、debug輸出有利於開發人員、維護人員迅速的定位問題,減少後期維護成本,提高現場可維護性;而且讓代碼複用性、兼容性得到良好的保障;不能因爲代碼空間限制屏蔽必要的錯誤輸出,這會增加問題定位的難度,浪費人力成本

標準的設計文檔

流程圖,數據流的設計也要符合已定製的標準,優良的設計文檔應該是符合標準的、高度可讀的

自動化測試

必要的白盒測試

首先自己的寫得模塊,要寫好經過設計測試代碼,並儘量做到不污染源碼;其次對於測試代碼要求儘量高的覆蓋率。再有就是文件位置劃分合理,不能打包到發佈代碼中。

負責的測試代碼

在沒有專職的白盒測試人員之前,這個測試任務是屬於研發人員的,所以測試代碼也是要根據模塊的設計優化持續的跟進優化

工具優化

行業中不時會出現一些優良的測試工具,需要時常關注,優良的測試工具能讓我們事半功倍

持續優化

架構設計責任

架構設計不是架構師一個人的責任,架構師不可能涉及到設計的細枝末節,這就需要研發人員自己對相關模塊設計負責,要靠自己的能力設計好,這樣才能做好一個優良的項目架構。同時模塊設計應遵循一定的規範,不能根據自己的意願想當然的設計

持續優化

沒有完美的代碼,也沒有完美的架構,我們需要根據當前的需求持續的進行優化,同時保證設計文檔的持續更新(高度一致性)

乾淨的代碼

應該先讓自己的代碼變得乾淨,再去進行持續的優化

總體補充

優秀的軟件工程師

要成爲一名優秀的軟件工程師,必須保證持續的學習,比如閱讀優秀的開源代碼、優秀的業界書籍;能力和眼界的提升永遠值得花大氣力去追求;能夠進行優良的設計需要大量的理論和實踐,比如進行高度抽象的設計,比如進行合理的模型設計(張雲龍老師提到的倉庫搬運設備的高度可擴展模型設計)

優良的思想

比學習具體的答案更加聰明和智慧的是學習思路,參悟思想。所以張雲龍老師多次提到UCOS II的設計思想對其的深遠影響。比如王金平提到的面向對象的編程思想對其工作的影響

良好的態度

如同巴普洛夫在《致青年們的一封信》中說到的,青年科學工作者應該具有的態度:
循序漸進->謙虛->熱情

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章