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

嵌入式架構師成長之路--架構設計

嵌入式系統(tǒng)的軟件架構設計
ARM架構嵌入式主板特點

評論