2.1 軟件工程的起源
(1)早期計算機程序
在1946年計算機剛誕生時,人們采用機器碼編制程序,根本沒有獨立的軟件的概念。
機器碼指令只是為了驅動計算機硬件工作,就像人們調節電視機、錄像機、洗衣機等家用電器的按鈕一樣。
1947年,馮諾依曼首先提出用流程圖描述計算機的運行過程,才使人們認識到程序設計是完全不同於硬件研制的另一項工作。從此以后,軟件的開發和研究才開始獨立地進行。
(2)現在人們認為
在信息產業中,微電子是基礎,計算機和網絡是載體,軟件是核心。
2.2 軟件開發的三個階段
(1)個人程序時期(1947年-1950年代末)
- 這一時期特點是硬件價格非常昂貴,軟件完全作為硬件的附屬
- 硬件致力於執行功能單一的程序
- 應用大多集中在科學計算方面
- 軟件是為了某個具體的應用和特定的硬件而定制
- 程序設計完全憑程序員的經驗和技藝以個人或小組方式進行
在這個時期,程序員使用的開發語言主要是機器語言和匯編語言,負責從程序的開卡、運行和維護的全過程,這是一種私人化的軟件環境。
(2)軟件作坊時期(1960年代初-1960年代末)
隨着以計算機為基礎的系統應用范圍的不斷擴大,以及系統數量的不斷增長,個體生產方式已經不能適應社會發展的需求,而是需要多人分工合作,共同完成一個程序的編制,需要對項目開發進行管理,即所謂“作坊式生產方式”。
出現了若干高級程序語言
(3)軟件工程時期(1970年代初至今)
計算機應用領域的進一步擴大,軟件的規模和復雜性也不斷增加
在軟件開發領域出現了“軟件危機”:
軟件質量差,可靠性難以保證
成本難以控制,很少有在預算內完成的
開發進步難以把握,周期長
可維護性較差,維護人員和費用增加
2.3 軟件工程的定義
軟件工程概念的提出:
1968年,NATO在聯邦德國舉行的關於軟件開發的會議上,首次提出了軟件工程的術語,標志着軟件工程作為一門學科的正式出現,至今已有40年的歷史。
其目的是倡導以工程的原理、原則和方法進行軟件開發,以解決軟件危機。
計算機百科全書上的軟件工程定義:
應用計算機科學、數學及管理科學等原理,以工程化方法制作軟件的工程。它借鑒傳統工程的原則、方法,創建軟件以達到提高質量,降低成本的目的。
其中,計算機科學、數學用於構造模型與算法,工程科學用於指定規范、設計范型、評估成本 及確定權衡,管理科學用於計划、資源、質量、成本等管理。
軟件工程是一門指導計算機軟件開發和維護的工程學科。軟件工程師一門交叉性學科。
首次NATO會議上的軟件工程定義:
軟件工程是用來建立和使用合理的工程原則,以經濟地獲取可靠的、且在真實機器上可高效工作的軟件。
IEEE中軟件工程定義:
(1)將系統化的、規范的、可量化的方法應用到軟件的開發、運行及維護中,即將工程化方法應用於軟件;
(2)在(1)中所述方法的研究。