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