軟體質量
出自 MBA智库百科(https://wiki.mbalib.com/)
目錄 |
軟體質量是指:“對用戶在功能和性能方面需求的滿足、對規定的標準和規範的遵循以及正規軟體某些公認的應該具有的本質”。該軟體質量定義一共強調了三項:前二項是根據質量術語“明確需要而規定的;後一項是按術語“隱含需要”而提出的意即:用戶的需求是軟體質量評價的基礎,不滿足用戶需求的軟體是不能交付使用和走向市場的;其次為規定的標準和規範是軟體開發的共同準則,不遵循這些標準和規範,就可能導致軟體開發的無序和軟體質量的低下;再次是對軟體的某些要求雖未明確提出,但卻是大家公認的,也應得到滿足
軟體質量包括兩方面的內容,(1)軟體過程質量;(2)軟體產品質量。目前流行的標準和模型充分體現了這一點,其中最具代表性就是ISO系列標準和CMM。影響軟體質量的因素如下:
1.功能性
是指系統滿足規格說明和用戶目標的程度,即在預定環境下能正確地完成預期功能的程度。它要求軟體沒有錯誤,能夠滿足用戶的目標。
2.可靠性
是指在規定的時間和條件下,軟體所能維持其性能水平的程度。可靠性對某些軟體是重要的質量要求,它除了反映軟體滿足用戶需求正常運行的程度,且反映了在故障發生時能繼續運行的程度。
3.性能
性能通常是指軟體的“時間一空間”效率,而不僅是指軟體的運行速度。人們總希望軟體的運行速度高些,並且占用資源少些。既要馬兒跑得快,又要馬兒吃的少。性能優化的關鍵工作是找出限制性能的“瓶頸”,不要在無關痛癢的地方瞎忙乎。
程式員可以通過優化數據結構、演算法和代碼來提高軟體的性能。例如資料庫程式的優化。演算法複雜度分析是很好的方法,可以達到“未卜先知”的功效。
性能優化就好像從海綿里擠水一樣,你不擠,水就不出來,你越擠海綿越乾。有些程式員認為現在的電腦不僅速度越來越高,而且記憶體越來越大,因此軟體性能優化的必要性下降了。這種看法是不對的,殊不知隨著機器的升級,軟體系統也越來越龐大了和複雜了,性能優化仍然大有必要。
4.易用性
指對於一個軟體,用戶學習、操作、準備輸入和理解輸出時,所做努力的程度。易使用性反映了與用戶的友善性,即用戶在使用本軟體時是否方便。現代人的生活節奏快,幹啥事都想圖個方便。所以把易用性作為重要的質量屬性對待無可非議。
軟體的易用性要讓用戶來評價。當用戶真的感到軟體很好用時,一股溫暖的感覺油然而生,於是就用“界面友好”、“方便易用”等詞來評價軟體產品。
5.清晰性
清晰意味著所有的工作成果易讀、易理解,可以提高團隊開發效率,降低維護代價。
開發人員只有在自己思路清晰的時候才可能寫出讓別人易讀、易理解的程式和文檔。
可理解的東西通常是簡潔的。一個原始問題可能很複雜,但高水平的人就能夠把軟體系統設計得很簡潔。如果軟體系統臃腫不堪,它遲早會出問題。所以簡潔是人們對工作“精益求精”的結果,而不是潦草應付的結果。
6.安全性
安全性是指防止系統被非法入侵的能力,既屬於技術問題又屬於管理問題。信息安全是一門比較深奧的學問,其發展是建立在正義與邪惡的鬥爭之上。究竟什麼樣的安全性是令人滿意的呢?一般地,如果黑客為非法入侵花費的代價(考慮時間、費用、風險等因素)高於得到的好處,那麼這樣的系統可以認為是安全的。對於普通軟體,並不一點要追求很高的安全性,也不能完全忽視安全性,要先分析黑客行為。
7.可維護性
指在一個可運行軟體中,為了滿足用戶需求、環境改變或軟體錯誤發生時,進行相應修改所做的努力程度。可維修性反映了在用戶需求改變或軟體環境發生變更時,對軟體系統進行相應修改的容易程度。一個易於維護的軟體系統也是一個易理解、易測試和易修改的軟體,以便糾正或增加新的功能,或允許在不同軟體環境上進行操作。
8.可擴展性
可擴展性反映軟體適應“變化”的能力。在軟體開發過程中,“變化”是司空見慣的事情,如需求、設計的變化,演算法的改進,程式的變化等等。現代軟體產品通常採用“增量開發模式”,不斷推出新版本,獲取增值利潤。可擴展性越來越重要。可擴展性是系統設計階段重點考慮的質量屬性。
9.健壯性
健壯性是指在異常情況下,軟體能夠正常運行的能力。正確性描述軟體在需求範圍之內的行為,而健壯性描述軟體在需求範圍之外的行為。開發者往往把異常情況錯當成正常情況而不作處理,結果降低了健壯性。用戶才不管正確性與健壯性的區別,反正軟體出了差錯都是開發方的錯。所以提高軟體的健壯性也是開發者的義務。健壯性有兩層含義:一是容錯能力,二是恢復能力。從語義上理解,恢復不及容錯那麼健壯。Unix容錯能力很強,可惜不好用。Windows容錯能力較差,但是恢復能力很好,而且很好用。占了90%的操作系統市場。
10.可移植性
指一個電腦系統或環境轉移到另一個電腦系統或環境的容易程度。主要體現為代碼的可移植性。編程語言越低級,用它編寫的程式越難移植,反之則越容易。軟體設計時應該將“設備相關程式”與“設備無關程式”分開,將“功能模塊”與“用戶界面”分開。
11.兼容性
兼容性是指不同產品(或者新老產品)相互交換信息的能力。例如兩個字處理軟體的文件格式兼容,那麼它們都可以操作對方的文件,這種能力對用戶很有好處。兼容性的商業規則:弱者設法與強者兼容,否則無容身之地;強者應當避免被兼容,否則市場將被瓜分。
弱者設法與強者兼容,否則無容身之地;強者應當避免被兼容,否則市場將被瓜分。