軟件屬性分為功能屬性和質(zhì)量屬性舍肠,
功能屬性指的是軟件可以做什么搀继,可以實(shí)現(xiàn)什么功能窘面。
質(zhì)量屬性指的是軟件怎么樣,比如好不好用叽躯,穩(wěn)不穩(wěn)定财边。
質(zhì)量屬性為何重要?
早年同時用過諾基亞手機(jī)和蘋果手機(jī)的人都知道点骑,論功能酣难,諾基亞手機(jī)其實(shí)比蘋果多很多,當(dāng)年蘋果剛出來時黑滴,凡是蘋果有的功能憨募,諾基亞都有,可每一個功能袁辈,蘋果都更好用菜谣,在易用性上,蘋果完勝諾基亞晚缩,于是最終結(jié)果大家都知道了尾膊。
對于一套軟件系統(tǒng),質(zhì)量屬性甚至比功能屬性更重要荞彼。
實(shí)現(xiàn)一個功能可能會有很多方式冈敛,不同的方式,功能一樣鸣皂,質(zhì)量卻大不相同抓谴。系統(tǒng)架構(gòu)設(shè)計,就是在軟件設(shè)計大的層面上做出選擇寞缝,以實(shí)現(xiàn)軟件系統(tǒng)的質(zhì)量屬性需求癌压。
質(zhì)量屬性都有哪些?
軟件系統(tǒng)都有哪些質(zhì)量屬性呢第租?主要有如下這些措拇,
可靠性
可靠性,也叫可用性慎宾,是指軟件可長期穩(wěn)定運(yùn)行的能力,一般用一段時間內(nèi)故障時間與正常運(yùn)行時間比來評估浅悉√司荩可靠性高的系統(tǒng),能夠長期不出錯术健,或者出錯后可以快速從錯誤中恢復(fù)汹碱。可修改性
當(dāng)需求發(fā)生變更或者環(huán)境發(fā)生變化時,系統(tǒng)是否可以快速得到調(diào)整荞估,就體現(xiàn)出系統(tǒng)的可修改性咳促。好的系統(tǒng)要求可以方便快速修改稚新。性能
指系統(tǒng)的在用戶發(fā)出指令后響應(yīng)的時間,及單位時間內(nèi)處理事務(wù)的數(shù)量跪腹。性能好的系統(tǒng)褂删,可以快速響應(yīng)用戶的指令,能在單位時間內(nèi)完成更多的事務(wù)處理冲茸。簡單來講屯阀,就是要快。安全性
指系統(tǒng)不會被無關(guān)人員濫用轴术,系統(tǒng)數(shù)據(jù)不管在存儲還是傳輸過程中都有得到妥善的保護(hù)难衰。可測試性
指系統(tǒng)方便被測試,以驗(yàn)證系統(tǒng)的業(yè)務(wù)邏輯確實(shí)與系統(tǒng)規(guī)格要求一致逗栽。易用性
指系統(tǒng)方便使用盖袭,可以很快上手,使用過程中不用操作復(fù)雜的步驟彼宠,沒有需要記憶的隱蔽的功能點(diǎn)鳄虱。一個字來形容,就是要讓用戶用起來爽兵志。
實(shí)現(xiàn)質(zhì)量屬性有哪些常用方法
要實(shí)現(xiàn)這些質(zhì)量屬性醇蝴,在軟件架構(gòu)設(shè)計時,是有一些方法想罕,或者說套路可以使用的悠栓。
- 可靠性
要提高系統(tǒng)的可靠性,可以從錯誤檢測按价,錯誤恢復(fù)惭适,錯誤預(yù)防三個方面下功夫。
- 心跳設(shè)計楼镐,是一個錯誤檢測機(jī)制癞志,讓系統(tǒng)定期向另外一套檢測系統(tǒng)發(fā)生固定信息(類似心跳),當(dāng)檢測系統(tǒng)在固定時間內(nèi)沒有收到信息時框产,即可以判斷對方系統(tǒng)發(fā)生了故障凄杯,即刻啟動恢復(fù)或者報警程序。
- 冗余設(shè)計秉宿,冗余是屬于一種錯誤恢復(fù)機(jī)制戒突,即提前準(zhǔn)備好一套備用方案,當(dāng)主方案發(fā)生錯誤時描睦,系統(tǒng)自動按照預(yù)先設(shè)計好的備用方案執(zhí)行膊存。
- 事務(wù)設(shè)計,屬于錯誤預(yù)防機(jī)制,即綁定一系列密切相關(guān)的步驟隔崎,要么全部成功今艺,要么全部不成功,避免數(shù)據(jù)不一致的情況發(fā)生爵卒。最典型的一個例子就是銀行轉(zhuǎn)賬虚缎,一個賬號出,一個賬號進(jìn)技潘,不能把錢在路上轉(zhuǎn)丟了遥巴。
- 可修改性
提高系統(tǒng)可修改的方法,包括局部化修改享幽,防止連鎖反應(yīng)铲掐,推遲綁定時間。
- 局部化修改值桩,即設(shè)計期間摆霉,按照責(zé)任分配模塊,將預(yù)期的變更奔坟,限定在一定范圍內(nèi)携栋。
- 防止連鎖反應(yīng),比如盡可能對接口編程咳秉,且維持接口規(guī)格不變婉支。每個模塊對外公開盡可能少的信息,隱藏一切不必要的信息澜建。
- 推遲綁定時間向挖,就將有可能的修改,盡量用配置文件炕舵,或者其他后期讓非開發(fā)人員可調(diào)整的方式實(shí)現(xiàn)何之。
- 性能
提供性能,可以通過減少資源的消耗咽筋,或者改善資源的管理及調(diào)度實(shí)現(xiàn)溶推。
- 改善算法,以減少資源的使用奸攻,提高計算效率
- 引入并發(fā)蒜危,幾個任務(wù)同時進(jìn)行,減少用戶等待時間睹耐。
- 分配不同任務(wù)不同優(yōu)先級舰褪,比如在視頻會議系統(tǒng)中,優(yōu)先保證語音的傳輸疏橄,以改善系統(tǒng)整體性能體驗(yàn)。
- 安全性
提高安全性,可以采用的方法有捎迫,抵抗攻擊晃酒,檢測攻擊和從攻擊中恢復(fù)。
- 對用戶身份進(jìn)行校驗(yàn)窄绒,增加校驗(yàn)碼輸入 等都是抵抗攻擊的方法
- 通過對訪問的來源贝次,頻率檢測,檢測可能發(fā)生的攻擊行為是抵抗攻擊的一種方式
- 攻擊中恢復(fù)即在檢測到攻擊行為發(fā)生后彰导,按照預(yù)先設(shè)計好的方案執(zhí)行動作
- 可測試性
可以通過輸入輸出和內(nèi)部監(jiān)控的方式來提高可測試性蛔翅。
- 記錄/回放,捕獲跨接口的調(diào)用信息位谋,作為測試軟件的輸入信息
- 內(nèi)部監(jiān)控山析,激活監(jiān)視器,將事件記錄下來以供測試檢查使用
- 易用性
包括即時提供系統(tǒng)輔助信息掏父,提供用戶操控性
- 比如在特定界面笋轨,預(yù)期用戶接下來的行為,告知用戶可以做什么操作及如何操作
- 在系統(tǒng)執(zhí)行過程中赊淑,提供用戶主動取消等操控功能
好的系統(tǒng)一定是質(zhì)量好的系統(tǒng)
好的系統(tǒng)與差的系統(tǒng)爵政,可以天差地別,用戶一用便知陶缺。就如喬布斯所說钾挟,客戶也許不知道自己想要的是什么,但是如果你同時提供兩套系統(tǒng)給客戶饱岸,客戶會知道如何選擇掺出,好的系統(tǒng)一定是質(zhì)量好的系統(tǒng),而不是功能多的系統(tǒng)伶贰。架構(gòu)設(shè)計師蛛砰,應(yīng)該要在質(zhì)量屬性上下功夫。特別要注意的是黍衙,有些質(zhì)量屬性之間是互相沖突的泥畅,比如安全性與易用性,安全性提升了琅翻,易用性可能會降低位仁,架構(gòu)設(shè)計時還需要拿捏平衡。