1 問題背景
一切為了進(jìn)度,軟件開發(fā)的首要目標(biāo)就是以最快的速度滿足客戶需求,“快”是第一要素,但是短期指標(biāo);可復(fù)用性、擴(kuò)展性等長期指標(biāo)被忽略,導(dǎo)致后期的維護(hù)、功能增減調(diào)整都非常困難。
一個(gè)小的業(yè)務(wù)需求會(huì)牽一發(fā)而動(dòng)全身,一個(gè)小的故障修復(fù)可能引入更多的問題。整個(gè)系統(tǒng)包袱越來越沉重,軟件的質(zhì)量和開發(fā)周期越來越不可控。
排除軟件開發(fā)人員的水平和項(xiàng)目進(jìn)度的原因,主要影響因素還包括軟件架構(gòu),和軟件缺陷的修復(fù)能力。對(duì)于量產(chǎn)軟件,架構(gòu)問題是先天性的,后期很難大改,只能前期預(yù)防;軟件缺陷問題是無法避免的,只能期望快速修復(fù)。拋磚引玉,也可先參看《嵌入式軟件bug從哪來,怎么去》。
2 軟件架構(gòu)問題
2.1 軟件架構(gòu)的特點(diǎn)
1. 承載力
正如一艘船最多能裝多少人,從軟件方面來說是軟件架構(gòu)能承載多少業(yè)務(wù)或功能需求,當(dāng)然,這需要架構(gòu)師一開始架構(gòu)系統(tǒng)的時(shí)候,就需要有一定的預(yù)見性。但也沒必要為了極小概率事件增加過多的冗余。
2. 易用性
易用性決定了軟件的整體開發(fā)效率,好的架構(gòu)會(huì)讓團(tuán)隊(duì)成員容易上手,子系統(tǒng)容易對(duì)接,開發(fā)效率高,各模塊和子系統(tǒng)的編寫只需要關(guān)注系統(tǒng)的設(shè)計(jì)和編碼工作,其他模塊間通信方面的事情架構(gòu)可以提供很好的兼容。
3. 擴(kuò)展性
一個(gè)水杯除了用來喝水,也可用來喝酒,適應(yīng)不同場(chǎng)景,在一定范圍內(nèi)滿足不同的需求,是非常有必要的。軟件架構(gòu)也是這樣,要新增更多的功能就要具備更高的擴(kuò)展性。可擴(kuò)展性的關(guān)鍵就在于新增部分不能影響其他,如果增刪導(dǎo)致系統(tǒng)整體使用異常,那么這個(gè)架構(gòu)的可擴(kuò)展性就很差。
4. 伸縮性
伸縮性就是設(shè)計(jì)的方案或系統(tǒng)是否可以根據(jù)需求適配不同數(shù)量的功能或子系統(tǒng),在我們?cè)O(shè)計(jì)的軟件系統(tǒng)中,架構(gòu)的可伸縮性決定了架構(gòu)的可適配性,例如,當(dāng)硬件資源不足時(shí),可以調(diào)整配置如flash的空間分配,支持減少一些服務(wù)但仍能正常運(yùn)行。
5. 容錯(cuò)性
軟件運(yùn)行中的異常,如用戶的非法操作,或者軟件本身的小缺陷導(dǎo)致整個(gè)系統(tǒng)無法使用,那這個(gè)架構(gòu)容錯(cuò)性就很差。軟件中的一些缺陷無法避免,但是我們應(yīng)盡量保證這個(gè)缺陷的影響范圍最小。倘若出現(xiàn)系統(tǒng)無法使用的情況,應(yīng)該有備份方案,比如自動(dòng)重啟或者自動(dòng)恢復(fù)數(shù)據(jù)等功能,也應(yīng)該能夠讓開發(fā)人員及時(shí)知道問題的發(fā)生,以及問題所在的位置并記錄錯(cuò)誤信息。
在架構(gòu)設(shè)計(jì)中,以上五項(xiàng)基本能力缺一不可,某項(xiàng)能力的突出并不能帶動(dòng)其他項(xiàng),如果某一項(xiàng)能力比較弱,隨著時(shí)間的推移,問題會(huì)越來越大,甚至系統(tǒng)崩潰。就像木桶原理那樣,一個(gè)木桶的容量不是取決于最長的那根木板,而是取決于最短的那根。
-
嵌入式軟件
+關(guān)注
關(guān)注
4文章
240瀏覽量
26736 -
架構(gòu)
+關(guān)注
關(guān)注
1文章
519瀏覽量
25557 -
系統(tǒng)
+關(guān)注
關(guān)注
1文章
1019瀏覽量
21431
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
嵌入式的諸多特點(diǎn)
嵌入式架構(gòu)有多重要
嵌入式軟件有哪些特點(diǎn)?
嵌入式軟件開發(fā)的特點(diǎn)有哪些呢
決定嵌入式系統(tǒng)軟件架構(gòu)的因素和架構(gòu)的影響
嵌入式環(huán)境下軟件設(shè)計(jì)的特點(diǎn)是什么
嵌入式軟件開發(fā)的特點(diǎn)、設(shè)計(jì)流程、嵌入式軟件的結(jié)構(gòu)
![<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發(fā)的<b class='flag-5'>特點(diǎn)</b>、設(shè)計(jì)流程、<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>的結(jié)構(gòu)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.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)
嵌入式架構(gòu)師成長之路--架構(gòu)設(shè)計(jì)
![<b class='flag-5'>嵌入式</b><b class='flag-5'>架構(gòu)</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)
ARM架構(gòu)嵌入式主板特點(diǎn)
![ARM<b class='flag-5'>架構(gòu)</b><b class='flag-5'>嵌入式</b>主板<b class='flag-5'>特點(diǎn)</b>](https://file1.elecfans.com/web2/M00/EB/A1/wKgZomZe5fWAXs4EAABHp9zbA6E074.png)
評(píng)論