產品的易用程度如何,執行速度如何,可靠性如何,當發生異常狀況時,系統如何處理。這些被稱爲軟件質量屬性,而特性是指系統非功能(也叫非行爲)部分的需求。程序員
軟件質量屬性劃分爲運行期質量屬性和開發期質量屬性兩大類。開發期質量屬性其實包含了和軟件開發,維護和移植這三類活動相關的全部質量屬性,這些是開發人員,開發管理人員和維護人員都很是關心的,對最終用戶而言,這些質量屬性只是間接地促進用戶需求的知足;而運行期間質量屬性是軟件系統在運行期間,最終用戶能夠直接感覺到的一類屬性,這些質量屬性直接影響着用戶對軟件產品的滿意度。算法
性能:
性能一般是指軟件的「時間—空間」效率,而不只是指軟件的運行速度。人們總但願軟件的運行速度快些,而且佔用資源少些。程序員能夠經過優化數據結構、算法和代碼來提升軟件的性能。算法複雜度分析是很好的方法,能夠達到「未卜先知」的功效。性能優化的目標是「既要馬兒跑得快,又要馬兒吃得少」,關鍵任務是找出限制性能的「瓶頸」,不要在無關痛癢的地方瞎忙活。性能優化就好像從海綿裏擠水同樣,你不擠,水就不出來,你越擠海綿越幹。有些程序員認爲如今的計算機不只速度愈來愈快,並且內存愈來愈大,所以軟件性能優化的必要性降低了。這種見解是不對的,卻不知隨着機器的升級,軟件系統也愈來愈龐大和複雜了,性能優化仍然大有必要。數據庫
持續可靠性:安全
軟件在運行時不會發生物理性質的變化,人們常認爲若是軟件的某個功能是正確的,那麼它一生都是正確的。但是咱們沒法對軟件進行完全的測試,沒法根除軟件中潛在的錯誤。平時軟件運行得好好的,說不許哪一天就不正常了,若有千年等一回的「千年蟲」問題、司空見慣的「內存泄露」問題、「偏差累積」問題,等等。所以把可靠性引入軟件領域是頗有意義的。性能優化
那些潛伏在代碼中的錯誤每每是不明顯的,之因此在測試的時候沒有暴露,是由於測試時的環境和條件不足以使之暴露,更況且咱們沒法對代碼進行最完全的測試。因而可知,故障是在通過日積月累,知足了必定的條件以後纔出現的。例如,「千年蟲」問題,「內存泄漏(吃內存)」致使內存耗盡,「偏差累積」致使計算錯誤進而致使連鎖反應,「性能開銷累積」致使性能顯著降低,等等。所以,故障一般都是不可預料的、災難性的。服務器
易用性:
易用性是指用戶使用軟件的容易程度。現代人的生活節奏快,幹什麼事均可能想圖個方便,因此把易用性做爲重要的質量屬性無可非議。致使軟件易用性差的根本緣由是開發人員犯了「錯位」的毛病:他覺得只要本身用起來方便,用戶也必定會滿意。俗話說「王婆賣瓜,自賣自詡」。軟件的易用性要讓用戶來評價。若是用戶以爲軟件很難用,開發人員不能有逆反心理。當用戶真的感到軟件很好用時,一股溫暖的感受就會油然而生,因而就會用「界面友好」、「方便易用」等詞來誇獎軟件的易用性。數據結構
安全性:
這裏的安全性是指信息安全,英文是Security而不是Safety。安全性是指防止系統被非法入侵的能力,既屬於技術問題又屬於管理問題。信息安全是一門比較深奧的學問,其發展是創建在正義與邪惡的鬥爭之上的。這世界彷佛不存在絕對安全的系統,連美國軍方的系統都頻頻遭黑客入侵。現在全球黑客氾濫,真是「道高一尺,魔高一丈」啊!對於大多數軟件產品而言,杜絕非法入侵既不可能也沒有必要。由於開發商和客戶願意爲提升安全性而投入的資金是有限的,他們要考慮值不值得。究竟什麼樣的安全性是使人滿意的呢?通常地,若是黑客爲非法入侵花費的代價(考慮時間、費用、風險等多種因素)高於獲得的好處,那麼這樣的系統就能夠認爲是安全的。負載均衡
可測試性:
可測試性指的是測試軟件組件或集成產品時查找缺陷的簡易程度。框架
採起如下措施保證本系統的質量屬性。佈局
性能:
輕量級開發,下降沒必要要的組件。數據庫表優化,減小依賴關係。
(CentOS+Nigix+Tomcat)雙機負載均衡+MySQL集羣。
服務器爲採用5臺華爲RH5885 v3,2臺F5 11050硬件負載均衡,1臺華爲S9706萬兆核心交換機。
安全性:
數據權限驗證,資源權限過濾。使用Spring自帶的安全框架,過濾器控制資源權限。
防火牆使用1臺天融信NGFW4000-U。
易用性:
使用成熟的前臺模板,支持Bootstrap 3.0構建響應式佈局。符合通常操做習慣。
持續可用性:
系統運行監測,出現異常進行捕獲且展示友好的信息給用戶,並記錄出現的異常供維護人員回溯問題。
服務器OS使用CentOS,Web服務器雙機負載均衡,數據庫服務器集羣負載均衡,核心交換機雙業務雙主控,全部電源雙冗餘。
機房建設標準爲A級。
可測試性:
變量命名規範,相關依賴環境打包集成。將「設備相關程序」與「設備無關程序」分開,將「功能模塊」與「用戶界面」分開。