軟件架構是“體現(xiàn)在其組件中的系統(tǒng)的基本組織、它們之間的關系以及與環(huán)境的關系,以及指導其設計和發(fā)展的原則。” 軟件架構識別主要系統(tǒng)部分并識別這些部分的輸入和輸出。在對架構的理解中,嵌入式開發(fā)人員要不斷地修改他們的代碼。盡管許多嵌入式產(chǎn)品正在經(jīng)歷越來越復雜的問題,但軟件架構被嚴重忽視,并且在許多情況下被誤解了。今天,讓我們研究一些關于如何使用軟件架構來改進我們的軟件的基本技巧。
技巧1 - 架構是藍圖
軟件架構是軟件的藍圖。架構為開發(fā)人員提供了系統(tǒng)的邊界和特征,就像建筑物的藍圖為建筑承包商提供了基礎、高度和重要特征一樣。在為軟件設計架構之前,不應編寫單行生產(chǎn)代碼。
技巧2 - 使用 UML
統(tǒng)一建模語言 (UML) 是一個很好的工具,開發(fā)人員可以使用它來開發(fā)他們的軟件架構。包含不同的建模圖,可用于指定系統(tǒng)的各個方面,從順序和狀態(tài)建模到部署。對于典型的嵌入式系統(tǒng),開發(fā)人員不需要使用每個圖表,而是可以選擇為產(chǎn)品提供最佳見解的模型。例如,對于一個典型的系統(tǒng),開發(fā)人員可能會使用活動圖、序列圖、狀態(tài)圖和對象圖。
技巧3 - 不要低估序列圖
序列圖通常用于顯示為系統(tǒng)成功執(zhí)行操作(例如傳輸數(shù)據(jù)或移動電機)而發(fā)生的事件序列。嵌入式開發(fā)人員將使用這些圖表來思考涉及多個組件甚至設備的復雜事件系列。但是,序列圖可能是一個非常強大的工具。不是簡單地根據(jù)需要使用圖表,而是可以使用它們來完全指定行為并用作系統(tǒng)的需求文檔。
技巧4 - 保持在 15,000 英尺的視野之上
軟件架構應該提供高級設計元素和部分,而不是低級細節(jié)。開發(fā)人員可能很想使用架構來定義設計的每一個細微差別。架構應該與語言無關,并識別主要的高級系統(tǒng)組件及其交互。定義變量名稱、語言結構,甚至是精確的算法對于架構來說都是太多的細節(jié)。實施者仍然需要靈活地調整他們的軟件以適應手頭的問題,并且深入細節(jié)可能會受到太多限制。出于這個原因,將架構圖保持在 15,000 英尺以上。
技巧5 - 運行模擬
使用 UML 開發(fā)軟件架構有一個獨特的好處——能夠在架構模型上運行模擬。例如,開發(fā)人員可以為狀態(tài)機建模,然后在狀態(tài)機上運行活動模型。可以輸入用戶數(shù)據(jù),例如按下按鈕甚至接收消息,這會導致狀態(tài)機在其不同狀態(tài)中移動。然后,嵌入式開發(fā)人員可以觀察行為并檢查系統(tǒng)在不同條件下的行為,而無需編寫任何代碼!潛在的好處是早期發(fā)現(xiàn)錯誤、驗證系統(tǒng)要求,以及可能節(jié)省成本和時間。