• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一個通用的軟件質(zhì)量評估指標體系

      2015-06-30 12:16:09翁秀木
      軟件 2015年3期
      關鍵詞:評估指標軟件

      摘要:軟件已成為人們工作和生活必不可少的助手和伴侶。軟件的質(zhì)量好壞直接影響了人們工作的效率和生活的水平。為確保軟件的質(zhì)量,需要一個系統(tǒng)的軟件質(zhì)量評估指標體系,本文參考了業(yè)內(nèi)軟件質(zhì)量評估指標,并結(jié)合多年軟件開發(fā)和運維經(jīng)驗,設計了一個通用的軟件質(zhì)量評估指標體系,根據(jù)此評估體系,我們可以對各種軟件的質(zhì)量進行較系統(tǒng)和全面地評估,從而有助于為軟件開發(fā)和維護工作提供參照,有助于全面保證和提高軟件的質(zhì)量。

      關鍵詞:軟件;軟件質(zhì)量;評估指標

      中圖分類號:TP311.52 文獻標識碼:A DOI:10.3969/j.issn.1003-6970.2015.03.012

      本文著錄格式:翁秀木,一個通用的軟件質(zhì)量評估指標體系[J].軟件,2015,36(3):59-63

      0.引言

      隨著IT技術,尤其是軟件技術的迅猛發(fā)展,軟件已成為人們工作和生活密不可分的一部分。例如本地PC辦公軟件、遠程網(wǎng)站、手機本地App等等。然而,軟件的質(zhì)量不佳也已成為影響人們工作和生活質(zhì)量的嚴重問題,例如,對于組織而言,例如金融機構(gòu),軟件的質(zhì)量差,造成客戶資料流失,不僅形象受損,也還可能要遭受業(yè)界監(jiān)管部門的巨額罰款。而對于個人而言,軟件的質(zhì)量差,不僅會影響正常使用,甚至會危及個人的安全,例如個人帳號安全,個人隱私泄露等。尤其在移動互聯(lián)網(wǎng)蓬勃發(fā)展的今天,這個問題尤其突出。

      因此,如何確保軟件的質(zhì)量,是一個業(yè)內(nèi)一直以來都十分重視的問題。而軟件的生命周期與人的生命周期有許多相似之處,軟件的質(zhì)量評估與人的體檢也有許多相似之處。人的體檢會借助一個的健康評估指標體系,而軟件的質(zhì)量評估也需要一個全面的質(zhì)量評估指標體系。本文根據(jù)作者多年從事軟件開發(fā)和維護工作的實踐經(jīng)驗,并借鑒業(yè)內(nèi)相關的研究成果,設計出了一個通用的軟件質(zhì)量評估指標體系,該體系由兩個維度組成:軟件的運行和軟件的修改。

      1.軟件質(zhì)量評估體系

      1.1軟件的運行

      軟件的運行指的是當軟件的設計、編碼和單元測試的工作完成后,進入系統(tǒng)集成測試、用戶測試、甚至上到生產(chǎn)環(huán)境上運行時,如何去評估軟件的質(zhì)量??梢苑譃?個指標:正確性、可靠性、效率性、可用性和安全性。

      1.1.1正確性

      正確性指的是評估軟件是否能夠正確地反映業(yè)務功能的要求,是否能夠正確地為用戶提供基本的業(yè)務服務。

      該指標的主要評估方法是,通過端對端的黑盒測試,根據(jù)測試用例,檢查軟件的功能是否符合需求規(guī)格說明書的要求。而在軟件編碼階段,可以通過運行單元測試腳本來進行正確性檢驗。

      這是最基本的軟件質(zhì)量的評價要求。但在實際項目中,這往往會或多或少出現(xiàn)軟件在系統(tǒng)集成測試、用戶測試、甚至在生產(chǎn)環(huán)境上才發(fā)現(xiàn)軟件的功能與業(yè)務的要求不符。主要原因是雙方面的:一是業(yè)務方(包括業(yè)務分析師,即BA)沒有正確地描述需求。二是軟件的設計、代碼實現(xiàn)和測試方?jīng)]有正確地理解需求。

      保證正確性的主要方法:(1)是業(yè)務方和軟件的設計和代碼實現(xiàn)方要強化溝通的有效性。例如極限編程思想提出的,雙方應該盡可能地面對面的溝通,其他形式的電話、電郵或即時通訊工具的溝通,都不如面對面溝通準確和有效。(2)是要有一份嚴謹而清晰的需求規(guī)格說明書,軟件設計、代碼實現(xiàn)和測試方的對需求的理解主要是以該需求規(guī)格說明書為準,需求規(guī)格說明書不嚴謹、不清晰勢必影響軟件的正確性。(3)是要有一套科學的需求管理流程和工具。在很多情景下,需求方對需求難以做到一開始就是十分準確的,需求的變更在整個項目的過程中都可能存在,尤其是根據(jù)迭代式開發(fā)和極限編程的思想,需求的變更是非常正常的,我們不能抗拒需求的變更,反而要擁抱需求的變更,要做到這點,就有必要有一套有效的需求管理流程和工具。

      1.1.2可靠性

      可靠性指的是評估軟件在如下三方面的表現(xiàn):容錯性、出錯后的恢復能力、可伸縮性(scalability)。其中:(1)容錯性,評估軟件運行出錯時,可否自動糾錯,而不影響在線用戶的使用,不影響后臺程序的繼續(xù)運行。(2)出錯后的恢復能力,評估軟件運行出錯后,要耗費多少時間和其他資源才能恢復運行。(3)可伸縮性,評估軟件在負載大,尤其是用戶劇增時,是否還能繼續(xù)保證正常運行。另外,在負載小時,軟件是否可以在足以支撐高質(zhì)量服務的前提下,使用盡量少的資源。

      可靠性指標的常用評估方法是:(1)容錯性,模擬出錯情景,觀察軟件的反映。例如,模擬將某個主文件刪去,看當軟件找不到主文件時,是否可以自動找其備份文件代替。(2)出錯后的恢復能力,可從流程(Process)、人(People)和技術(Technology)三個方面來衡量,流程方面,是否存在著合理的、有效的出錯恢復流程。人方面,是否存在著擁有扎實運維知識的工程師隊伍。技術方面,是否存在著支持快速、完整地恢復錯誤的技術,例如備份數(shù)據(jù)庫。(3)可伸縮性,在測試階段,常常利用壓力測試工具來模擬軟件負載劇增時的情境,如Load Runner和Win Runner。借此檢測軟件系統(tǒng)的抗壓能力。

      因此,要提高可靠性,(1)在容錯性上,從代碼級別來看,不僅要保證軟件在“正常”情境下可運行,而且要考量各種“異?!鼻榫常糗浖强梢曰謴偷?,就應該有健全的異常處理代碼,使軟件能從異常中自動恢復,而不影響前臺用戶的使用或后臺程序的繼續(xù)運行。從系統(tǒng)級別來看,軟件若能有多個備份,例如Web應用同時部署在多個Web服務器上,若某個Web服務器上的應用訪問失敗,系統(tǒng)會自動切換到其他Web服務器上的應用,這個切換對用戶是透明的,從而提高了容錯性。(2)出錯后的恢復能力。從流程、人和技術上看。既要有一個科學的應錯流程,又要有一支出色的排錯工程師隊伍,還要有一套完善的監(jiān)錯、查錯和糾錯軟硬件技術。(3)可伸縮性??梢杂脤崿F(xiàn)負載均衡的軟硬件技術,提高軟件系統(tǒng)的可伸縮性。

      1.1.3效率性

      效率性指從時間和空間(內(nèi)存、磁盤和網(wǎng)絡帶寬)兩方面來評估軟件的效率。

      軟件運行的時間效率也可以通過端對端的黑盒測試來評估,例如選取最復雜的業(yè)務功能模塊,測量用戶發(fā)出請求后,要多長時間,該功能才可執(zhí)行完畢??臻g方面的測試,需要在客戶端和服務器端,衡量軟件運行時的內(nèi)存和磁盤占用量,而網(wǎng)絡帶寬測試可以使用專門的網(wǎng)絡測速工具。

      要提高軟件的時間和空間效率。(1)從時間上說,可以提高算法的時間復雜度,用優(yōu)良的算法來減少復雜模塊的時間消耗,另外,一般而言,磁盤讀寫的時間會遠慢于內(nèi)存讀寫的時間,過多的磁盤讀寫勢必會降低軟件的時間效率,因而若能盡可能把磁盤讀寫轉(zhuǎn)換為內(nèi)存讀寫,就可以大大提高時間效率。另外,對于有網(wǎng)絡調(diào)用的軟件而言,過多的網(wǎng)絡調(diào)用也必然會降低時間效率,因而盡量減少網(wǎng)絡調(diào)用,就可大大提高軟件的時間效率。并且,對于高耗時的動作,可以考慮用多線程的技術來實現(xiàn),當然也可以用多進程來實現(xiàn),但多進程之間的通信會比多線程慢。(2)從空間上說,磁盤和內(nèi)存的空間占用,后者對軟件的效率影響更大,尤其是在資源有限環(huán)境下的運行的軟件對內(nèi)存空間占用更加敏感,如智能家居、智能穿戴等軟件。一方面注意合理地管理內(nèi)存,一方面要盡量優(yōu)化算法,使得內(nèi)存空間占用量盡可能少。而對于有網(wǎng)絡調(diào)用的軟件,網(wǎng)絡帶寬的占用也是影響效率的重要因素,應該盡可能地減少通過網(wǎng)絡的數(shù)據(jù)傳輸量,例如用各種緩存技術。

      1.1.4可用性

      可用性指從用戶體驗上來評估軟件的可操作性、易學性、可理解性等。

      軟件的用戶界面美觀是重要的,但可用性高是更重要的,如何提高軟件的可用性。正如雅各布尼爾森所說,可以從十個方面來衡量:(1)系統(tǒng)狀態(tài)的可見性。軟件系統(tǒng)應該始終讓用戶知道當前正在做什么,這可通過在適當?shù)臅r間內(nèi)得到適當?shù)姆答亖韺崿F(xiàn)。(2)系統(tǒng)和真實世界的匹配。軟件系統(tǒng)應該采取用戶的語言與用戶交互,即用戶熟悉的詞句、概念等,而盡量不要用系統(tǒng)術語。同時要遵循真實世界的習慣,使得信息能以自然的、符合邏輯的順序來呈現(xiàn)。(3)用戶控制和自由。用戶時常會錯誤地選擇了某個系統(tǒng)功能,進入某個不期望的狀態(tài),這時需要有一個清晰的出口,使得用戶能夠簡便地退出。例如支持撤銷和重做功能。(4)一致性和標準。要確保軟件系統(tǒng)的整體風格一致性,不要讓用戶對不同的詞句、狀態(tài)和動作是否代表同一件事情而困擾。(5)錯誤避免。清晰而準確的錯誤消息是必要的,但最好能通過細心的設計避免錯誤的發(fā)生,比如消除錯誤發(fā)生的前提條件,或者在用戶確定提交請求之前,檢驗用戶將要提交的信息是否合法,并提供一個確認頁面讓用戶再次確認將要提交的信息。(6)識別而非回想。也就是說,有關系統(tǒng)使用的提示信息應該是可見的、或可適時獲得的,從而,用戶可以快速識別該怎么做,而不需要費時回想過去是怎么做的。(7)使用的靈活性和效率性。對于軟件系統(tǒng)的高級用戶,應該有些渠道使之能快速地進行某些操作,如快捷鍵。并且,能讓用戶可以自定義一些經(jīng)常性操作的快捷訪問方式。(8)簡約式的設計。與用戶的任何交互界面都盡量剔除不相干的、或者極少需要的信息。(9)幫助用戶辨別和診斷錯誤,并從錯誤中恢復。錯誤信息要以自然的語言來表述(不要用代碼),要精確地描述錯誤,建設性地提出解決方法。(10)幫助和文檔。雖然最好軟件系統(tǒng)能夠不需要文檔即可使用,但是提供足夠的幫助和文檔也是需要的。并且,應該讓用戶可以較容易地查到幫助信息,幫助信息應該關注于用戶的任務,列出具體的執(zhí)行步驟,但也不要太繁瑣。

      1.1.5安全性

      安全性指從機密性(confidentiality)、完整性(Integrity)和可訪問性(Availability)三方面來評估軟件的質(zhì)量。機密性,指的是避免信息或數(shù)據(jù)被未授權用戶獲取。完整性指的是避免信息或數(shù)據(jù)被未授權用戶篡改??稍L問性指的是保證信息或數(shù)據(jù)在需要時可以被訪問。

      為提高軟件的安全性,(1)應確保信息和數(shù)據(jù)的機密性,從整體系統(tǒng)設計來看,要有完善的認證和授權機制。從代碼級別來看,代碼編寫要可以防止為了獲取非授權信息的常見代碼安全攻擊,例如,主要針對Web應用軟件的SQL注入攻擊和跨站點腳本攻擊,這可以通過恰當?shù)拇a來避免。(2)應確保信息和數(shù)據(jù)的完整性。例如信息和數(shù)據(jù)的傳播渠道要有足夠的安全級別,例如客戶端訪問服務器端的認證模塊應該用安全級別更高的https協(xié)議,而不要用簡單的http協(xié)議。(3)應確保信息和數(shù)據(jù)的可訪問性。一方面可從硬件上來提高,例如使用高訪問性的服務器集群。另一方面可從軟件上來提高,例如可以通過合理的代碼設計,避免惡意客戶多次反復提交請求而導致的內(nèi)存溢出等錯誤。

      1.2軟件的修改

      軟件系統(tǒng)的生命周期通常包括初始化、計劃、需求分析、設計、測試、實施、運營和維護、乃至終止下線等多個步驟。在這其中,軟件運營和維護的成本是最高的。常占軟件生命周期總成本約七成。因此,評估軟件的質(zhì)量,不單要衡量軟件運行時的指標,還要看軟件進入維護階段時軟件修改的指標。可分為6項:可維護性、可測試性、可讀性、簡單性、可移植性和可重用性。

      1.2.1可維護性

      維護往往是軟件生命周期中成本最大的階段。軟件必須強調(diào)可維護性,努力做到修改現(xiàn)有代碼時,盡量少影響其他代碼,增加新功能時,盡量少影響現(xiàn)有功能。例如,遵循開閉原則,Software entities(classes,modules,functions,etc.)should be open for extension,but closed for modification,即軟件應追求只需較少修改、甚至無需修改,就可擴展。

      軟件要提高可維護性,就要盡量提高軟件實體(包括類、模塊和函數(shù)等)的內(nèi)聚性,一般而言,若能做到單一實體只承擔單一職責,就可有較高的內(nèi)聚性。提高了軟件實體的內(nèi)聚性,并盡可能降低實體之間的耦合性,軟件維護時,就能更好地實現(xiàn)“增加新功能實體時,不修改舊功能實體”。另外,對于遵循面向?qū)ο笏枷氲能浖裕谠O計時遵循面向接口、依賴倒轉(zhuǎn)等原則,也可以提高軟件的可維護性,容易擴展且基本無需修改原代碼。

      1.2.2可測試性

      可測試性指在對軟件進行黑盒或白盒測試時的難易程度。因為當軟件在運維期需要查錯、修改時,常常需要對軟件進行測試。軟件的易測性直接決定了是否能在有限的生產(chǎn)環(huán)境維護時間窗內(nèi)快速地糾錯,直接決定了軟件修改項目進行階段的成本。因此,如何提高軟件的可測試性,也是軟件設計階段必須謹慎考量的一個重要方面,因為它影響了軟件修改時的效率,影響了軟件的質(zhì)量。

      1.2.3可讀性

      可讀性指軟件的需求、設計架構(gòu)、源碼、測試用例、運行時所依賴的軟硬件平臺,是否容易被理解,被讀懂。有完善易懂的軟件需求相關資料,軟件修改時才能更好地理解當前需求。有科學合理的設計架構(gòu),軟件修改時才能更快地掌握當前架構(gòu)。有簡約明了的源碼(包括代碼風格和注釋),軟件修改時才能更有效地讀懂、修改源碼。有清晰規(guī)范的測試用例等有關測試的資料,軟件修改時才能更好地避免改動對原有功能的影響。有全面詳細的軟件硬件平臺資料,軟件修改時才能更準確地將改動部署上線。

      1.2.4簡單性

      簡單性指軟件的設計和編碼、包括其他的需求、測試和部署文檔,是否能遵循簡約的風格。正如極限編程思想所倡導的:The simplest thing that could possibly work,即讓軟件能用最簡單的方式保證正常運作。Spring框架的發(fā)明者Rod Johnson也說過:好的工程實踐并不一定非要用復雜的方法來實現(xiàn)。只有這樣,才能讓現(xiàn)有的軟件設計架構(gòu)、源碼、需求規(guī)格說明書、測試用例文檔、部署文檔等更容易被理解,從而才能更好地降低軟件修改時的成本。

      1.2.5可移植性

      可移植性指軟件在不同軟硬件環(huán)境中遷移時,是否能做到遷移成本低,且各種功能和性能指標也不受影響。讓橘生于淮南為橘,生于淮北也須為橘,而不能為枳。例如,當軟件在遷移到不同的操作系統(tǒng)平臺時,是否需要重新編譯,甚至重新編碼。或者遷移到不同的數(shù)據(jù)庫管理系統(tǒng)時,是否需要重新編碼。尤其是所處軟硬件環(huán)境較復雜的軟件系統(tǒng),可移植性更為重要。

      1.2.6可重用性

      可重用性指軟件實體(如類、模塊和函數(shù))能否被其他軟件實體重用,并且能以較低成本重用。甚至是軟件本身,能否作為一個整體的服務,被其他軟件系統(tǒng)直接調(diào)用。

      要做到軟件實體的可重用性高,同樣也要遵循“單一職責”的設計思想,提高軟件實體的內(nèi)聚性,降低耦合性,就可以較好地實現(xiàn)重用現(xiàn)有實體。

      2.小結(jié)

      以上從軟件運行和修改兩個維度,設計了一個軟件質(zhì)量評估體系,即軟件運行時的正確性、可靠性、效率性、可用性、安全性,軟件修改時的可維護性、可測試性、可讀性、簡單性、可移植性、可重用性。這個質(zhì)量評估體系是通用的,軟件不論基于何種業(yè)務功能,不論基于何種技術環(huán)境,都可采用這個評估體系對質(zhì)量進行系統(tǒng)的全面評估。未來的研究,還需要對如何衡量這些指標、如何提高軟件的質(zhì)量做更深入的分析,期望能對軟件的設計、編碼、測試、實施和運維等工作有一定幫助。

      猜你喜歡
      評估指標軟件
      禪宗軟件
      英語文摘(2021年10期)2021-11-22 08:02:26
      軟件對對碰
      巧用立創(chuàng)EDA軟件和Altium Designer軟件設計電路
      電子制作(2019年24期)2019-02-23 13:22:20
      我國職業(yè)足球俱樂部商譽價值評估指標體系構(gòu)建研究
      探析檔案安全風險評估中的元評估
      檔案管理(2017年1期)2017-01-17 19:17:10
      以評估指標為依據(jù),構(gòu)建教學質(zhì)量標準體系
      東方教育(2016年13期)2017-01-12 20:07:39
      企業(yè)高層次人才評估指標機制研究
      商(2016年30期)2016-11-09 09:14:31
      行業(yè)型高校就業(yè)質(zhì)量評估指標體系初探
      考試周刊(2016年80期)2016-10-24 17:32:15
      中西方對比視角下我國公務員績效評估指標體系探究
      商(2016年23期)2016-07-23 14:25:47
      即時通訊軟件WhatsApp
      CHIP新電腦(2015年10期)2015-10-15 18:03:55
      腾冲县| 吉木萨尔县| 盐城市| 上蔡县| 文山县| 新竹县| 尼玛县| 东乡族自治县| 邢台市| 喀喇沁旗| 晋中市| 莱阳市| 乌海市| 叙永县| 张家界市| 南江县| 庆元县| 辽阳县| 晋宁县| 会理县| 兰考县| 红安县| 盐津县| 潢川县| 濮阳县| 旌德县| 剑川县| 宁晋县| 财经| 卢湾区| 维西| 梨树县| 星座| 什邡市| 宁陕县| 广宗县| 曲水县| 建昌县| 西青区| 平定县| 太白县|