登錄

軟件質(zhì)量

百科 > 軟件項目管理 > 軟件質(zhì)量

1.什么是軟件質(zhì)量

  軟件質(zhì)量是指:“對用戶在功能和性能方面需求的滿足、對規(guī)定的標準和規(guī)范的遵循以及正規(guī)軟件某些公認的應(yīng)該具有的本質(zhì)”。該軟件質(zhì)量定義一共強調(diào)了三項:前二項是根據(jù)質(zhì)量術(shù)語“明確需要而規(guī)定的;后一項是按術(shù)語“隱含需要”而提出的意即:用戶的需求是軟件質(zhì)量評價的基礎(chǔ),不滿足用戶需求的軟件是不能交付使用和走向市場的;其次為規(guī)定的標準和規(guī)范是軟件開發(fā)的共同準則,不遵循這些標準和規(guī)范,就可能導(dǎo)致軟件開發(fā)的無序和軟件質(zhì)量的低下;再次是對軟件的某些要求雖未明確提出,但卻是大家公認的,也應(yīng)得到滿足

2.影響軟件質(zhì)量的因素

  軟件質(zhì)量包括兩方面的內(nèi)容,(1)軟件過程質(zhì)量;(2)軟件產(chǎn)品質(zhì)量。目前流行的標準和模型充分體現(xiàn)了這一點,其中最具代表性就是ISO系列標準和CMM。影響軟件質(zhì)量的因素如下:

  1.確性

  是指系統(tǒng)滿足規(guī)格說明和用戶目標的程度,即在預(yù)定環(huán)境下能正確地完成預(yù)期功能的程度。它要求軟件沒有錯誤,能夠滿足用戶的目標。

  2.可靠性

  是指在規(guī)定的時間和條件下,軟件所能維持其性能水平的程度??煽啃詫δ承┸浖侵匾?a href="/wiki/%E8%B4%A8%E9%87%8F%E8%A6%81%E6%B1%82" title="質(zhì)量要求">質(zhì)量要求,它除了反映軟件滿足用戶需求正常運行的程度,且反映了在故障發(fā)生時能繼續(xù)運行的程度。

  3.性能

  性能通常是指軟件的“時間一空間”效率,而不僅是指軟件的運行速度。人們總希望軟件的運行速度高些,并且占用資源少些。既要馬兒跑得快,又要馬兒吃的少。性能優(yōu)化的關(guān)鍵工作是找出限制性能的“瓶頸”,不要在無關(guān)痛癢的地方瞎忙乎。

  程序員可以通過優(yōu)化數(shù)據(jù)結(jié)構(gòu)、算法和代碼來提高軟件的性能。例如數(shù)據(jù)庫程序的優(yōu)化。算法復(fù)雜度分析是很好的方法,可以達到“未卜先知”的功效。

  性能優(yōu)化就好像從海綿里擠水一樣,你不擠,水就不出來,你越擠海綿越干。有些程序員認為現(xiàn)在的計算機不僅速度越來越高,而且內(nèi)存越來越大,因此軟件性能優(yōu)化的必要性下降了。這種看法是不對的,殊不知隨著機器的升級,軟件系統(tǒng)也越來越龐大了和復(fù)雜了,性能優(yōu)化仍然大有必要。

  4.易用性

  指對于一個軟件,用戶學(xué)習(xí)、操作、準備輸入和理解輸出時,所做努力的程度。易使用性反映了與用戶的友善性,即用戶在使用本軟件時是否方便?,F(xiàn)代人的生活節(jié)奏快,干啥事都想圖個方便。所以把易用性作為重要的質(zhì)量屬性對待無可非議。

  軟件的易用性要讓用戶來評價。當用戶真的感到軟件很好用時,一股溫暖的感覺油然而生,于是就用“界面友好”、“方便易用”等詞來評價軟件產(chǎn)品。

  5.清晰性

  清晰意味著所有的工作成果易讀、易理解,可以提高團隊開發(fā)效率,降低維護代價。

  開發(fā)人員只有在自己思路清晰的時候才可能寫出讓別人易讀、易理解的程序和文檔。

  可理解的東西通常是簡潔的。一個原始問題可能很復(fù)雜,但高水平的人就能夠把軟件系統(tǒng)設(shè)計得很簡潔。如果軟件系統(tǒng)臃腫不堪,它遲早會出問題。所以簡潔是人們對工作“精益求精”的結(jié)果,而不是潦草應(yīng)付的結(jié)果。

  6.安全性

  安全性是指防止系統(tǒng)被非法入侵的能力,既屬于技術(shù)問題又屬于管理問題。信息安全是一門比較深奧的學(xué)問,其發(fā)展是建立在正義與邪惡的斗爭之上。究竟什么樣的安全性是令人滿意的呢?一般地,如果黑客為非法入侵花費的代價(考慮時間、費用、風(fēng)險等因素)高于得到的好處,那么這樣的系統(tǒng)可以認為是安全的。對于普通軟件,并不一點要追求很高的安全性,也不能完全忽視安全性,要先分析黑客行為。

  7.維修性

  指在一個可運行軟件中,為了滿足用戶需求、環(huán)境改變或軟件錯誤發(fā)生時,進行相應(yīng)修改所做的努力程度。可維修性反映了在用戶需求改變或軟件環(huán)境發(fā)生變更時,對軟件系統(tǒng)進行相應(yīng)修改的容易程度。一個易于維護的軟件系統(tǒng)也是一個易理解、易測試和易修改的軟件,以便糾正或增加新的功能,或允許在不同軟件環(huán)境上進行操作。

  8.可擴展性

  可擴展性反映軟件適應(yīng)“變化”的能力。在軟件開發(fā)過程中,“變化”是司空見慣的事情,如需求、設(shè)計的變化,算法的改進,程序的變化等等?,F(xiàn)代軟件產(chǎn)品通常采用“增量開發(fā)模式”,不斷推出新版本,獲取增值利潤。可擴展性越來越重要??蓴U展性是系統(tǒng)設(shè)計階段重點考慮的質(zhì)量屬性。

  9.健壯性

  健壯性是指在異常情況下,軟件能夠正常運行的能力。正確性描述軟件在需求范圍之內(nèi)的行為,而健壯性描述軟件在需求范圍之外的行為。開發(fā)者往往把異常情況錯當成正常情況而不作處理,結(jié)果降低了健壯性。用戶才不管正確性與健壯性的區(qū)別,反正軟件出了差錯都是開發(fā)方的錯。所以提高軟件的健壯性也是開發(fā)者的義務(wù)。健壯性有兩層含義:一是容錯能力,二是恢復(fù)能力。從語義上理解,恢復(fù)不及容錯那么健壯。Unix容錯能力很強,可惜不好用。Windows容錯能力較差,但是恢復(fù)能力很好,而且很好用。占了90%的操作系統(tǒng)市場。

  10.可移植性

  指一個計算機系統(tǒng)或環(huán)境轉(zhuǎn)移到另一個計算機系統(tǒng)或環(huán)境的容易程度。主要體現(xiàn)為代碼的可移植性。編程語言越低級,用它編寫的程序越難移植,反之則越容易。軟件設(shè)計時應(yīng)該將“設(shè)備相關(guān)程序”與“設(shè)備無關(guān)程序”分開,將“功能模塊”與“用戶界面”分開。

  11.兼容性

  兼容性是指不同產(chǎn)品(或者新老產(chǎn)品)相互交換信息的能力。例如兩個字處理軟件的文件格式兼容,那么它們都可以操作對方的文件,這種能力對用戶很有好處。兼容性的商業(yè)規(guī)則:弱者設(shè)法與強者兼容,否則無容身之地;強者應(yīng)當避免被兼容,否則市場將被瓜分。

評論  |   0條評論