Posted on 2008-05-28 19:20
windy 閱讀(206)
評論(0) 編輯 收藏 所屬分類:
軟件測試理論
所謂非功能性需求,是指軟件產品為滿足用戶業務需求而必須具有且除功能需求以外的特性。軟件產品的非功能性需求包括系統的性能、可靠性、可維護性、可擴充性和對技術和對業務的適應性等。下面對其中的某些指標加以說明。在這里可以看到非功能性需求涉及的范圍很廣,軟件產品本身不是孤立存在的,還涉及到諸多外在環境的影響。非功能性需求必須考慮軟件既要可用,又要易用。
對于非功能性需求描述的困難在于很難像功能性需求那樣,可以通過結構化和量化的詞語來描述清楚,在描述這類需求時候我們經常采用軟件性能要好,查詢要在多少時間內出結果,軟件健壯性要好等較模糊的描述詞語。這類描述詞語都是脫離了軟件的執行環境,人和相關的場景的描述,因此信息很難體現到軟件架構設計和具體的實現中。我們在架構設計中關注的安全,系統開發框架,并發和性能,異常日志等不是憑空產生出來的,而是來源于我們對非功能性需求的分析。
一個軟件系統必須完整,因此不僅僅包括了可執行的程序,還包括了在線幫助,數據和用戶管理,日志異常查詢,自動升級等相關功能特征。這些需求不僅僅是為了滿足用戶的需要,也是為了我們后續維護和監控系統的需要。
系統的可靠性,可維護性和適應性是密不可分的。當系統出現故障和用戶出現錯誤的操作后是否支持恢復,當用戶在使用過程中遇到錯誤的時候是否可以立即定位問題,但業務場景和邏輯發生變化的時候系統是否支持,當網絡不穩定或使用中異常中斷的情況下系統是否都有相應的容錯措施,這些都是需要在非功能性需求中考慮到的問題。
易用性也是我們在開發非功能性需求中必須要考慮到的問題,易用性同時還涉及到美工和UI界面,人機工程,交互式設計,心理學,用戶行為模式等多方面的知識。易用性的三原則就是易見,易學和易用或者叫為發現,易懂,效率。易見就是各種功能操作不要藏得太深,用戶很容易找到他們期望進行的各種操作;易學需要軟件系統通過在線幫助,導航,向導等各種方式保證軟件是可自學習的;易用的重點則在軟件在熟練使用后應該可以更快的進行各項操作。這三者相互間也存在沖突,需要平衡,而平衡的一個重點就是真正的做到以用戶為中心進行設計,需要去細分場景和用戶。
對于非功能性需求的描述,在描述過程中必須要強調到人,業務場景,環境等各方面的內容。強調的目的就是要說明非功能性需求不是無限度的,任何一項非功能性需求的實現往往會付出更大的研發人力成本和硬件網絡成本。比如我們在描述一個表單的模糊查詢功能的時候,如果簡單的描述為所有查詢都要在多少秒內完成,那么這種需求將很難得到滿足,以下是一些可選的描述方式。
1.估計用戶數為1萬人,每天登錄用戶數為3000左右,網絡的帶寬為100M帶寬。
2.在非高峰時間根據編號和名稱特定條件進行搜索,可以在3秒內得到搜索結果。
3.當通過互聯網接入系統的時候,期望在編號和名稱搜索時最長查詢時間<15秒。
有了這些場景和數據后,我們在進行架構設計的時候就可以有針對性的選擇我們的開發框架和模式,數據庫,軟硬件環境配置已經復雜功能的具體實現方式等。同時這些需求還可以更好的指導我們對通過性能測試等工具對這些非功能性需求進行驗證。