1. 程式人生 > >幾類系統需要關註的質量屬性

幾類系統需要關註的質量屬性

html 系統 目標 不同 所有 可用性 應該 發出 bubuko

前一篇文章,總結了三高系統所關註的一些重要質量屬性。就想到,其實不同類型的系統對質量屬性也往往要求大不一樣。

下圖是軟件系統架構設計時,需要關註的一些軟件質量屬性。

技術分享圖片

開發期質量屬性,是開發人員或後期的維護人員比較關心的,這些質量的好壞,往往會影響到開發和維護成本。而運行期質量屬性,則是最終用戶比較關心的,因為其在使用時是能切身體會到這些效果的,故而會影響用戶對整個系統的滿意度。

所以,對於基於互聯網的系統而言,其更關註的是:性能、可用性、伸縮性、擴展性、安全性。這些大多都是運行期的質量屬性。而這幾年互聯網、移動互聯網公司越來越熱,所以這些公司在討論設計時,往往是針對三高系統的設計,如:大流量、高並發、大數據量、集群、緩存等,詳見上篇博客:《三高系統常用架構模式》。

而對於企業級應用系統而言,其更關註的則是開發期的質量屬性。因為 2B 的軟件開發公司,關註的更多的是快速開發、快速實施的開發成本,以及後期的維護成本。所以在這些公司的架構師在討論設計時,往往談論的是快速開發平臺、快速實施平臺、業務組件級的大粒度重用等。

再如,遊戲的架構設計,則更為復雜。特別是現在的網絡遊戲,幾乎大部分質量屬性的要求都會很高。一個好的架構設計,即會影響用戶體驗、公司的收入,也影響到開發一款新遊戲的開發成本。所以厲害的遊戲公司,可以很快地通過累積的遊戲框架或引擎開發出一款新的遊戲,也能在三高的情況下保證用戶的體驗,甚至還能在運行期不間斷的快速持續更新。

當然,上面說的只是簡單粗略的劃分。其實不同的系統,往往要求都不同,我們不可一概而論。應該說,所有的系統,都應該對開發期、運行期的質量屬性進行分析。所以,架構師在做軟件架構設計時,需要針對不同類型的系統,對質量屬性進行具體的分析。這需要通過與 Stake Holder 的溝通,分析出目標系統對這些質量屬性的要求,然後排列出質量屬性(非功能需求)的重要度、優先級,以作為架構設計的主要目標。

幾類系統需要關註的質量屬性