幾類系統需要關注的質量屬性
前一篇文章,總結了三高系統所關注的一些重要質量屬性。就想到,其實不同型別的系統對質量屬性也往往要求大不一樣。
下圖是軟體系統架構設計時,需要關注的一些軟體質量屬性。
開發期質量屬性,是開發人員或後期的維護人員比較關心的,這些質量的好壞,往往會影響到開發和維護成本。而執行期質量屬性,則是終端使用者比較關心的,因為其在使用時是能切身體會到這些效果的,故而會影響使用者對整個系統的滿意度。
所以,對於基於網際網路的系統而言,其更關注的是:效能、可用性、伸縮性、擴充套件性、安全性。這些大多都是執行期的質量屬性。而這幾年網際網路、移動網際網路公司越來越熱,所以這些公司在討論設計時,往往是針對三高系統的設計,如:大流量、高併發、大資料量、叢集、快取等,詳見上篇部落格:《
而對於企業級應用系統而言,其更關注的則是開發期的質量屬性。因為 2B 的軟體開發公司,關注的更多的是快速開發、快速實施的開發成本,以及後期的維護成本。所以在這些公司的架構師在討論設計時,往往談論的是快速開發平臺、快速實施平臺、業務元件級的大粒度重用等。
再如,遊戲的架構設計,則更為複雜。特別是現在的網路遊戲,幾乎大部分質量屬性的要求都會很高。一個好的架構設計,即會影響使用者體驗、公司的收入,也影響到開發一款新遊戲的開發成本。所以厲害的遊戲公司,可以很快地通過累積的遊戲框架或引擎開發出一款新的遊戲,也能在三高的情況下保證使用者的體驗,甚至還能在執行期不間斷的快速持續更新。
當然,上面說的只是簡單粗略的劃分。其實不同的系統,往往要求都不同,我們不可一概而論。應該說,所有的系統,都應該對開發期、執行期的質量屬性進行分析。所以,架構師在做軟體架構設計時,需要針對不同型別的系統,對質量屬性進行具體的分析。這需要通過與 Stake Holder 的溝通,分析出目標系統對這些質量屬性的要求,然後排列出質量屬性(非功能需求)的重要度、優先順序,以作為架構設計的主要目標。