2.2.1 必須熟悉業(yè)務(wù)
軟件是為業(yè)務(wù)服務(wù)的,業(yè)務(wù)才是“目的”,軟件系統(tǒng)是為了達(dá)成業(yè)務(wù)系統(tǒng)目標(biāo)的手段和方法。適應(yīng)當(dāng)前的業(yè)務(wù)需求是基礎(chǔ),充分考慮和預(yù)測(cè)未來(lái)的業(yè)務(wù)擴(kuò)展,根據(jù)業(yè)務(wù)的擴(kuò)展性來(lái)設(shè)計(jì)軟件的擴(kuò)展性。如果可預(yù)見(jiàn)未來(lái)沒(méi)有擴(kuò)展重大新業(yè)務(wù)的需求,那么相應(yīng)的軟件架構(gòu)就沒(méi)有必要采用高擴(kuò)展的軟件架構(gòu)。比如嵌入式的傳感器數(shù)據(jù)采集小設(shè)備,就沒(méi)有必要把云計(jì)算等,業(yè)務(wù)范圍不沾邊的技術(shù)點(diǎn)放到其中。軟件架構(gòu)必須以服務(wù)業(yè)務(wù)為核心思想,不熟悉當(dāng)前軟件業(yè)務(wù)、和未來(lái)業(yè)務(wù)的擴(kuò)展的架構(gòu)師是很難設(shè)計(jì)出好的軟件架構(gòu)。
2.2.1 借鑒業(yè)內(nèi)成熟的架構(gòu)
不照搬,并不意味著不要借鑒。借鑒業(yè)內(nèi)成熟的軟、硬件架構(gòu)是相對(duì)穩(wěn)妥、高效的做法。以業(yè)內(nèi)的架構(gòu)為基礎(chǔ),根據(jù)自身業(yè)務(wù)的特點(diǎn),進(jìn)行適配、裁剪和增加新的功能。熟悉業(yè)內(nèi)常規(guī)的、成熟的、最新的軟件架構(gòu)是架構(gòu)師的一項(xiàng)基本功。但熟悉并不是意味著必須立即在目標(biāo)系統(tǒng)中實(shí)施這些軟件架構(gòu)。
2.2.3 采用設(shè)計(jì)模塊
設(shè)計(jì)模式(Design pattern)代表了最佳實(shí)踐,設(shè)計(jì)模式是軟件開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中對(duì)一般問(wèn)題的解決方案;是一套被反復(fù)使用的、多數(shù)人知曉的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),經(jīng)過(guò)相當(dāng)長(zhǎng)的一段時(shí)間的試驗(yàn)和錯(cuò)誤總結(jié)出來(lái)的。
使用設(shè)計(jì)模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性,合理地運(yùn)用設(shè)計(jì)模式可以完美地解決很多問(wèn)題。每種模式在現(xiàn)實(shí)中都有相應(yīng)的原理來(lái)與之對(duì)應(yīng),每種模式都描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問(wèn)題,以及該問(wèn)題的核心解決方案,這也是設(shè)計(jì)模式能被廣泛應(yīng)用的原因。
用設(shè)計(jì)模式構(gòu)建一個(gè)新的軟件模塊時(shí),短期會(huì)讓人感覺(jué)有多此一舉的味道;但中長(zhǎng)期來(lái)看,設(shè)計(jì)模式能夠克服“壞”架構(gòu)的特征。學(xué)習(xí)這些模式有助于經(jīng)驗(yàn)不足的開(kāi)發(fā)人員通過(guò)一種簡(jiǎn)單快捷的方式來(lái)學(xué)習(xí)軟件設(shè)計(jì)。盡管設(shè)計(jì)模塊通常被有經(jīng)驗(yàn)的面向?qū)ο蟮能浖_(kāi)發(fā)人員所采用,但是嵌入式軟件C語(yǔ)言也可以借鑒,參考《嵌入式軟件的設(shè)計(jì)模式(上)》,《嵌入式軟件的設(shè)計(jì)模式(下)》。
2.2.4 合理的橫向和縱向切分
橫向切分 :從硬件、驅(qū)動(dòng)、組件到業(yè)務(wù)層,軟件分層隔離。如數(shù)據(jù)通信:PHY/MAC/IP/TCP/應(yīng)用層
縱向切分 :根據(jù)業(yè)務(wù)處理流程的環(huán)節(jié)縱向切分,不同的環(huán)節(jié)為不同的模塊,不同的業(yè)務(wù)功能為不同的模塊,如socket網(wǎng)絡(luò)、GNSS衛(wèi)星定位。
2.2.5 按樹(shù)形結(jié)構(gòu)組織
按照樹(shù)形結(jié)構(gòu)的方式組織軟件系統(tǒng),不同的大功能拆分為小功能,文件夾內(nèi)套文件夾的實(shí)現(xiàn)形式,命名上統(tǒng)一,方便按功能快速找到對(duì)應(yīng)的源碼。
2.2.6 降低模塊之間的耦合度
耦合性是一種軟件度量,是指一程序中模塊及模塊之間信息或參數(shù)依賴的程度;內(nèi)聚性是一個(gè)和耦合性相對(duì)的概念,一般而言低耦合性代表高內(nèi)聚性,反之亦然。
2.2.7 降低模塊與模塊之間通信
一個(gè)軟件內(nèi)模塊與模塊之間的通信,構(gòu)成了一個(gè)內(nèi)部的通信網(wǎng),避免內(nèi)部模塊的通信采用網(wǎng)狀結(jié)構(gòu),這種解決方案是設(shè)計(jì)模式中的中介者模式。
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19126瀏覽量
305302 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136863 -
嵌入式軟件
+關(guān)注
關(guān)注
4文章
240瀏覽量
26648 -
架構(gòu)
+關(guān)注
關(guān)注
1文章
514瀏覽量
25475
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論