軟件質量概述的六大屬性
摘要:軟件屬性包括功能屬性和質量屬性,但是,軟件架構(及軟件架構設計師)重點關注的是質量屬性。文章從常見的六個質量屬性,即可用性、可修改性、性能、安全性、可測試性、易用性寫起,使讀者對其有初步的認識和了解。
關鍵詞:軟件;質量屬性;體系架構;
Six attributes of software quality overview
Absrtact:Software attributes include function attributes and quality attributes, but software architecture (and software architecture designers) focus on quality attributes. This paper starts with six common quality attributes, that is, usability, modifiability, performance, security, testability and USABILITY, so that readers have a preliminary understanding of them.
Keywords: Software; quality attributes; architecture;
一、可用性
1、可用性戰術將會組織錯誤發展為故障,或者至少能夠把錯誤的影響限制在一定范圍內,從而使系統恢復成為可能。可用性是指系統正常運行時間的比例,是通過兩次故障之間的時間長度或在系統崩潰情況下能夠恢復正常運行的速度來衡量的。
2、維護可用性的方法:
(1)錯誤檢測——用來檢測故障的某種類型的健康監視
(2)自動恢復——檢測到故障時某種類型的恢復
(3)錯誤預防——阻止錯誤演變為故障
3、可用性戰術分類
錯誤檢測、恢復監測和修復、重新引入、預防
二、可修改性
可修改性是指系統或軟件能夠快速地以較高地性價比對系統進行變更地能力。對於一個網站,我們要修改它某一板塊地UI界面,當我們對界面進行修改時是否引起對另一個UI模塊地影響,是否會引起后台控制,業務邏輯代碼地變更,是否會引起整個網站地崩潰,這就體現了一個網站地整個架構是否具備可修改性。
引起可修改性地因素包括用戶需求和系統內在需求。用戶需求例如用戶對軟件某些圖標的更改,而淘寶網后期對數據庫體系架構的更新和完善則來源於系統內在的需求。
可修改性地戰術分析:
1、局部化變更
局部化意味着實現“模塊化”思想,也就是設計模式中的“單一職責原則”的設計原則。通俗的來講就是一個模塊只完成一個部分,使每一個模塊責任單一,防止職責過多引起整體變更時的繁瑣,復雜,主要表現在類、函數、方法和接口的時候,實現“高內聚,低耦合”。
2、防止連鎖反應
所謂連鎖反應就是我們平時編程,無論是寫函數還是寫類,都需要被其他類還是函數調用,修改此函數或類就會影響到調用他的函數,這就是連鎖反應。
防止連鎖反應:
·信息隱藏。信息隱藏就是把某個實體地責任分解為更小地部分並選擇哪些信息成為共有,哪些信息成為私有的。
·維持現有的接口。該戰術的模式包括添加接口、添加適配器、提供一個占位程序。
·限制通信路徑。限制與一個給定的模塊共享的模塊,減少聯系,一旦變更影響會小很多。
·使用仲裁者。插入仲裁者來管理依賴之間的關系,就比如數據庫的使用,通過數據庫來管理不同的數據信息。
3、推遲綁定時間
將有可能的修改,盡量用配置文件,或者其他后期讓非開發人員可調整的方式實現。
三、性能
性能反應的是系統的響應能力,表現在三個方面,速度、吞吐量和持續高速性。
性能戰術的目標是對一定的時間限制內到達系統的事件生成一個響應,這些事件可以是消息到達、定時器到時,系統狀態的變化。
影響響應時間的因素,包括資源消耗和閉鎖時間。資源包括CPU、數據存儲、網絡通信帶寬和內存等;資源消耗是指實際需要耗費的時間;比如:數據的增刪改查,CPU進行大量的加減運算等等。由於資源爭用、資源不可用或長時間計算導致事件無法處理,這是指計算機可能等待的時間。最常見的就是多個進程同時操作一個數據,寫操作正操作此數據,讀操作只能等待,必須等寫操作解鎖,讀操作才能進行,這就會產生等待時間。
性能戰術的三大分類:
(1)資源需求——分析影響性能的資源因素。提高計算效率,減少計算開銷,管理事件率,控制采樣頻率。
(2)資源管理——提高資源的應用效率。引入並發維持多個副本,增加可用資源。
(3)資源仲裁——解決資源的爭用。調度策略,先進/先出,固定優先級,動態優先級,靜態調度。
四、安全性
安全性是指在確保用戶正常使用系統的情況下,軟件抵御攻擊的能力。
提高安全性的方法主要分為三大類:抵抗攻擊,檢測攻擊,從攻擊中恢復
1、抵抗攻擊:防止攻擊隊系統和數據造成影響乃至破壞
(1)用戶的證實:通過賬號密碼,指紋等識別手段,確定現在正在訪問系統的人是真正的用戶
(2)用戶的授權:管理用戶權限,確認用戶的操作在自己的權限內
(3)維持數據的保密性:數據傳輸時進行加密
(4)維持數據的完整性:利用MD5碼等校驗文件是否未修改。MD5碼是和文件內容相關的字符串,文件的任何一點改動理論上都會導致MD5碼變化
(5)減少暴露:關閉不安全的或沒必要的端口,自啟動服務和無線路由SSID等
(6)訪問控制:通過白名單,限制可以訪問的用戶或其他主機
2、檢測攻擊:盡早發現正在進行地攻擊,確保能夠及時作出回應如關閉主機等。系統監測一般是軟件和人工結合,既有自動檢測系統檢測異常,也有安全專家人工復核或檢查
3、從攻擊中恢復:在被攻擊並產生了影響后,盡快地從異常情況中恢復
(1)恢復狀態:采用提高可用性的一些手段,如備份等,提高恢復速度
(2)攻擊者的識別:找出並確定攻擊者,震懾潛在的攻擊者
五、可測試性
可測試性戰術的目標是允許在完成軟件開發的一個增量后,輕松地對軟件進行測試,從而發現錯誤。
可測試性戰術分析:
1、管理輸入/輸出
(1)記錄/回放。指將捕獲跨接口地信息,並將其作為測試專用軟件地輸入。
(2)將接口與現實分離。將接口與實現分離允許實現的代替。
(3)特化訪問路線/接口。具有特化的測試接口允許通過測試工具並獨立於其正常操作,來捕獲或指定組件變量的值。
2、內部監視。組件可以維持狀態、性能負載、容量、安全性或其他可通過接口訪問的信息。當監視狀態被激活時可以記錄事件。例如可以使用編譯器控制台實時顯示程序運行時的各種查詢或輸入輸出結果,一遍監視。
六、易用性
易用性涉及用戶完成任務的容易程度以及所提供的用戶支持類型。易用性可以划分為幾個模塊:學習系統功能、有效使用系統、最小化錯誤影響、系統適應用戶需求和提高用戶信息和滿意度。
易用性場景分析的響應得出系統可以提供一下一個或多個響應:
支持“學習系統功能”——幫助系統對上下文敏感;用戶熟悉界面;界面在不熟悉的上下文中使用
支持“有效使用系統”——數據/命令的集合;重用已經輸入的數據/命令;支持屏幕內的高效導航;具有一致操作的清晰視圖;全面的搜索;最小化錯誤的影響:撤銷、取消、從系統故障恢復、識別並糾正用戶錯誤、檢索忘記的密碼,驗證系統資源
支持“適應系統”——定制化、國際化
支持“感覺舒服”——顯示系統狀態、按照用戶的步調工作
參考文獻:
[1] naughty,軟件中的質量屬性(一)
[2] naughty,軟件中的質量屬性(二)
[3] iteye_2272,軟件的質量屬性及其說明
