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

2021-07-25 21:25:55 字數 1724 閱讀 2214

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

模組化設計的目的就是提高移植性、復用性、可擴充套件……所以模組內部遵循高內聚原則,模組之間遵循低耦合原則。 模組設計就是要對其他模組高度隱藏內部資料和細節,即滿足最少知道原則(盡少的實體之間的資訊互動)。模組內用到的標頭檔案寫在private中,模組外需要的寫在public中;

設計優良的模組介面需要進行合理層次的抽象,並放在合理位置;通過id引數留可擴充套件餘量。

少用全域性變數,因為全域性變數的使用讓**閱讀難度加大,增加耦合性,可以通過static、指標、結構體、get()、set()、限制使用範圍(private)等方式避免全域性變數的使用。

優良的嵌入式軟體分層設計是上層嚴格依賴底層,並消滅迴圈依賴。
我們自己5116目前的模組化分層設計有些地方還可以改進。比如card 驅動的檔案組織可謂嚴重的重複設計,cardbase和norbase,慢速驅動、快速驅動檔案混雜在了一起,應提取公共部分再放合理位置;上層任意呼叫暫存器及影響了可閱讀性,也不負責低耦合的要求;key驅動功能過於複雜,不符合乙個包只做一類事情的原則,需要進行合理拆分;

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

能用**直接表達的不寫在文件中,不能過度設計,否則文件更新起來會很吃力

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

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

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

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

首先自己的寫得模組,要寫好經過設計測試**,並盡量做到不汙染源程式碼;其次對於測試**要求盡量高的覆蓋率。再有就是檔案位置劃分合理,不能打包到發布**中。

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

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

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

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

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

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

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

如同巴普洛夫在《致青年們的一封信》中說到的,青年科學工作者應該具有的態度:

循序漸進->謙虛->熱情

我學到了什麼 我思考了什麼

經理是個搞開發搞了十多年的人,甚至自己開發了框架並投入使用了.搞得外包,全國各地都跑過.可以自豪的說哪哪公司什麼系統參與搞過,人生閱歷非常豐富.我思考最多的應該是我哥跟我說後來經理也說過的話,我哥說時候我不太有感覺,經理說時候還舉了個例子.意思就是人在三十前都不是掙錢的時候.是投資自己的時候.去給自...

軟體架構設計

首先我們應該了解什麼是軟體架構設計?架構大體分為以下幾種 邏輯架構 模組劃分 介面定義 領域模型 開發架構 技術選型 檔案劃分 編譯關係 物理架構 硬體分布 軟體部署 方案優化 執行架構 技術選型 控制流劃分 同步關係 資料架構 技術選型 儲存格式 資料分布 程式設計師向架構師轉型的關鍵突破 學會系...

軟體架構設計

在嵌入式軟體開發的專案中,很少見到有專案架構師這一工作職稱,但是大型專案的總是會有架構師一說。1 為什麼嵌入式開發很少會出現架構師這一職責。嵌入式開發的專案,一般有兩種模式 一類是 完全由開發人員自己設計 排除庫函式 另一類是基於固有的作業系統進行開發。前者一般都是針對特定應用,所有 的規模不會很大...