定義: 軟件工程一直以來都缺少一個統一的定義,不少學者、組織機構都分別給出了本身的定義: BarryBoehm:運用現代科學技術知識來設計並構造計算機程序及爲開發、運行和維護這些程序所必需的相關文件資料。 IEEE:在軟件工程術語彙編中的定義:軟件工程是:1.將系統化的、嚴格約束的、可量化的方法應用於軟件的開發、運行和維護,即將工程化應用於軟件;2.在1中所述方法的研究 FritzBauer:在NATO會議上給出的定義:創建並使用完善的工程化原則,以較經濟的手段得到能在實際機器上有效運行的可靠軟件的一系列方法。 《計算機科學技術百科全書》:軟件工程是應用計算機科學、數學、邏輯學及管理科學等原理,開發軟件的工程。軟件工程借鑑傳統工程的原則、方法,以提升質量、下降成本和改進算法。其中,計算機科學、數學用於構建模型與算法,工程科學用於制定規範、設計範型(paradigm)、評估成本及肯定權衡,管理科學用於計劃、資源、質量、成本等管理。 比較承認的一種定義認爲:軟件工程是研究和應用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟件,以及如何把通過時間考驗而證實正確的管理技術和當前可以獲得的最好的技術方法結合起來。 ISO 9000對軟件工程過程的定義是:軟件工程過程是輸入轉化爲輸出的一組彼此相關的資源和活動。 發展過程: 軟件是由計算機程序和程序設計的概念發展演化而來的,是在程序和程序設計發展到必定規模而且逐步商品化的過程當中造成的。軟件開發經歷了程序設計階段、軟件設計階段和軟件工程階段的演變過程。 程序設計階段 程序設計階段出如今1946年~1955年。此階段的特色是:尚無軟件的概念,程序設計主要圍繞硬件進行開發,規模很小,工具簡單,無明確分工(開發者和用戶),程序設計追求節省空間和編程技巧,無文檔資料(除程序清單外),主要用於科學計算。 軟件設計階段 軟件設計階段出如今1956年~1970年。此階段的特色是:硬件環境相對穩定,出現了「軟件做坊」的開發組織形式。開始普遍使用產品軟件(可購買),從而創建了軟件的概念。隨着計算機技術的發展和計算機應用的日益普及,軟件系統的規模愈來愈龐大,高級編程語言層出不窮,應用領域不斷拓寬,開發者和用戶有了明確的分工,社會對軟件的需求量劇增。但軟件開發技術沒有重大突破,軟件產品的質量不高,生產效率低下,從而致使了「軟件危機」的產生。 軟件工程階段 自1970年起,軟件開發進入了軟件工程階段。因爲「軟件危機」的產生,迫令人們不得不研究、改變軟件開發的技術手段和管理方法。今後軟件產生進入了軟件工程時代。此階段的特定是:硬件已向巨型化、微型化、網絡化和智能化四個方向發展,數據庫技術已成熟並普遍應用,第三代、第四代語言出現;第一代軟件技術:結構化程序設計在數值計算領域取得優異成績;第二代軟件技術:軟件測試技術、方法、原理用於軟件生產過程;第三代軟件技術:處理需求定義技術用於軟件需求分析和描述。