1.適用性:在不同的系統約束下,軟件滿足用戶需求的難易程度。
2.有效性:軟件系統可以最有效地利用計算機的時間和空間資源。各種軟件都把系統的時間/空間開銷作為衡量軟件質量的重要技術指標。在很多場合,追求時間有效性和空間有效性會有矛盾,所以我們不得不為了空間有效性犧牲時間有效性,或者為了時間有效性犧牲空間有效性。時間/空間權衡是壹種常用的技術。
3.可修改性:可以在不增加原系統復雜性的情況下修改系統。它支持軟件的調試和維護,這是壹個不可企及的目標。
4.可靠性:可以防止由於概念、設計和結構不完善導致的軟件系統故障,並具有恢復由於操作不當導致的軟件系統故障的能力。
5.可理解性:系統結構清晰,能直接反映問題的需求。可理解性有助於控制系統軟件的復雜性,支持軟件的維護、移植或重用。
6.可維護性:軟件交付使用後,可以通過修改來糾正潛在的錯誤,提高性能等屬性,使軟件產品適應環境的變化。軟件維護成本在軟件開發成本中占很大比例。可維護性是軟件工程中壹個非常重要的目標。
7.復用性:將壹個或壹組具有相對獨立概念或功能的相關模塊定義為軟組件。可以裝配在系統的任何位置,減少了工作量。
8.可移植性:軟件從壹個計算機系統或環境轉移到另壹個的困難。
9.可追溯性:根據軟件需求向前追溯軟件設計和程序的能力,或者根據軟件設計和程序向後追溯軟件需求的能力。
10,互操作性:多個軟件元素相互通信、協作完成任務的能力。
軟件工程的基本特征
1.軟件工程專註於大型結構:“大”和“小”的分界線不是很清楚。通常壹個人短時間寫的程序叫小程序,多人合作半年以上寫的程序叫大程序。傳統的編程技術和工具支持小規模編程,不能簡單地用於開發大規模程序。現在,軟件開發項目通常構建壹個包含幾個相關程序的“系統”。
2.軟件工程的中心任務是控制復雜性:通常情況下,軟件解決的問題非常復雜,我們無法從整體上考慮。人要分解問題,所以分解的每壹部分都是可以理解的,各部分之間的溝通關系也是簡單的。用這種風不能理解問題的整體復雜性,但可以使之可控。
3.軟件經常變化:大多數軟件模擬現實世界的某壹部分,例如,處理讀者對圖書館的需求或跟蹤銀行中貨幣的流通。現實世界是不斷變化的。為了不被快速淘汰,軟件必須隨著模擬的真實世界而變化。
4.軟件開發的效率很重要:社會對新應用系統的需求超過了人力資源所能提供的極限,軟件供不應求的現象越來越嚴重。因此,軟件工程的壹個重要課題就是尋求更好、更有效的方法和工具來開發和維護軟件。