軟件屬性包括功能屬性與質量屬性,在軟件架構裏,更加關注的是質量屬性。質量是系統的屬性,而功能是系統的目標。算法
既然將質量屬性與功能區別開,也就是說質量屬性是功能以外的東西,在軟件架構裏,咱們尋求的是在知足功能屬性的前提下,儘量知足質量屬性。不少時候,致使軟件須要發生變動的每每不是系統功能須要變動,而是系統難以維護、擴展、被黑客破壞等安全
質量屬性的定義:一個系統的用來描述系統知足利益相關者需求的程度的可測量或可測試的屬性(A quality attribute (QA) is a measurable or testable property of a system that is used to indicate how well the system satisfies the needs of its stakeholders. )架構
質量屬性亦被稱爲:佈局
-
-
-
非功能性需求Non-Functional Requirements (NFRs)個人理解是與系統具體功能無關性能
-
跨職能約束Cross-Functional Constraints (CFCs)個人理解是一個系統質量屬性將會約束多個系統功能測試
-
-
構架和質量屬性之間的關係字體
- 質量屬性不徹底依賴於設計、實現和部署
易用性:
系統可否爲用戶提供取消操做?——這一類屬於構架層次的問題
什麼樣的佈局最直觀?什麼樣的字體最清晰?——這屬於詳細設計的部分,不屬於構架設計。
可修改性:
劃分功能的方式——這屬於架構層次的問題
模塊中的編碼技巧——非架構層次問題
系統性能:
組件間通信數量、分配給每一個組件的功能、資源共享的方式,等,這些都屬於架構層次的問題
實現某功能採用的算法、如何編碼這些算法,等,都會影響系統性能,但屬於非構架層次的問題。ui
- 構架不能獨自實現質量屬性
構架爲質量屬性的實現打下了基礎,但不關注實現細節的話,這個基礎就失去了意義。編碼
- 複雜系統中,不能孤立地實現質量屬性,質量屬性是互相關聯的,每每不能兼顧
例如,爲了可靠性,增長冗餘處理器和進程,保證不會因單點故障使系統崩潰。但這樣對安全性不利,系統會有更多的地方可能會遭到入侵設計
質量屬性的來源:3類需求
功能需求
質量屬性需求
約束
描述質量屬性需求的6個部分
刺激stimulus:是到達系統的事件event
刺激源stimulus source:生成刺激的實體(計算機、人-可信或不可信)
響應response:刺激到達後採起的反應
響應度量response measure:對響應效果進行度量
環境:刺激發生時的各類條件
製品:多是系統,或系統的一部分