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è)未來的業(yè)務(wù)擴(kuò)展,根據(jù)業(yè)務(wù)的擴(kuò)展性來設(shè)計(jì)軟件的擴(kuò)展性。如果可預(yù)見未來沒有擴(kuò)展重大新業(yè)務(wù)的需求,那么相應(yīng)的軟件架構(gòu)就沒有必要采用高擴(kuò)展的軟件架構(gòu)。比如嵌入式的傳感器數(shù)據(jù)采集小設(shè)備,就沒有必要把云計(jì)算等,業(yè)務(wù)范圍不沾邊的技術(shù)點(diǎn)放到其中。軟件架構(gòu)必須以服務(wù)業(yè)務(wù)為核心思想,不熟悉當(dāng)前軟件業(yè)務(wù)、和未來業(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ì)模式是軟件開發(fā)人員在開發(fā)過程中對(duì)一般問題的解決方案;是一套被反復(fù)使用的、多數(shù)人知曉的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),經(jīng)過相當(dāng)長(zhǎng)的一段時(shí)間的試驗(yàn)和錯(cuò)誤總結(jié)出來的。
使用設(shè)計(jì)模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性,合理地運(yùn)用設(shè)計(jì)模式可以完美地解決很多問題。每種模式在現(xiàn)實(shí)中都有相應(yīng)的原理來與之對(duì)應(yīng),每種模式都描述了一個(gè)在我們周圍不斷重復(fù)發(fā)生的問題,以及該問題的核心解決方案,這也是設(shè)計(jì)模式能被廣泛應(yīng)用的原因。
用設(shè)計(jì)模式構(gòu)建一個(gè)新的軟件模塊時(shí),短期會(huì)讓人感覺有多此一舉的味道;但中長(zhǎng)期來看,設(shè)計(jì)模式能夠克服“壞”架構(gòu)的特征。學(xué)習(xí)這些模式有助于經(jīng)驗(yàn)不足的開發(fā)人員通過一種簡(jiǎn)單快捷的方式來學(xué)習(xí)軟件設(shè)計(jì)。盡管設(shè)計(jì)模塊通常被有經(jīng)驗(yàn)的面向?qū)ο蟮能浖_發(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 按樹形結(jié)構(gòu)組織
按照樹形結(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)注
5092文章
19177瀏覽量
307653 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137707 -
嵌入式軟件
+關(guān)注
關(guān)注
4文章
240瀏覽量
26729 -
架構(gòu)
+關(guān)注
關(guān)注
1文章
519瀏覽量
25551
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
誠(chéng)聘嵌入式軟件架構(gòu)師
嵌入式軟件開發(fā)中的程序架構(gòu)
嵌入式架構(gòu)有多重要
為何要進(jìn)行嵌入式軟件架構(gòu)設(shè)計(jì)?如何設(shè)計(jì)?
決定嵌入式系統(tǒng)軟件架構(gòu)的因素和架構(gòu)的影響
實(shí)時(shí)多任務(wù)嵌入式軟件的架構(gòu)方式的設(shè)計(jì)應(yīng)用
![實(shí)時(shí)多任務(wù)<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>的<b class='flag-5'>架構(gòu)</b>方式的設(shè)計(jì)應(yīng)用](https://file.elecfans.com/web2/M00/4A/23/pYYBAGKhvJ-AJgs1AAAmf-mkKHo242.png)
嵌入式開發(fā)中常用的軟件架構(gòu)
![<b class='flag-5'>嵌入式</b>開發(fā)中常用的<b class='flag-5'>軟件</b><b class='flag-5'>架構(gòu)</b>](https://file.elecfans.com/web1/M00/D7/D8/o4YBAF_sSJ-AMGyLAAD7UFjDetw320.jpg)
嵌入式開發(fā)中軟件架構(gòu)存在的意義
![<b class='flag-5'>嵌入式</b>開發(fā)中<b class='flag-5'>軟件</b><b class='flag-5'>架構(gòu)</b>存在的意義](https://file.elecfans.com/web2/M00/13/D1/poYBAGE4Ej-AeFJ_AAA2gHWzuag795.png)
嵌入式系統(tǒng)軟件架構(gòu)設(shè)計(jì)
![<b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>軟件</b><b class='flag-5'>架構(gòu)</b>設(shè)計(jì)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
嵌入式系統(tǒng)的軟件架構(gòu)設(shè)計(jì)
詳解FreeRTOS:嵌入式軟件系統(tǒng)架構(gòu)
![詳解FreeRTOS:<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>系統(tǒng)<b class='flag-5'>架構(gòu)</b>](https://file1.elecfans.com/web2/M00/82/73/wKgaomRTcAqADhmVAAA4BOUHPIA708.png)
評(píng)論