什麽是軟件工程?
計算機工程從電子工程學科中分離出來,旨在研究計算機硬件的相關工程問題,而軟件工程從計算機科學中的壹個學科方向發展成為與之並重的壹門獨立學科,重點研究如何以系統的、可控的、高效的方式開發和維護高質量軟件的問題。 1.軟件工程的定義軟件工程學科誕生後,人們為軟件工程給出了不同的定義,例如最早的定義是由F.L. Bauer給出的,即“軟件工程是為了經濟地獲得能夠在實際機器上高效運行的、可靠的軟件而建立和應用壹系列堅實的軟件工程原則”。而美國梅隆卡耐基大學軟件工程研究所(SEI)給出的定義則是軟件工程是以工程的形式應用計算機科學和數學原理,從而經濟有效地解決軟件問題。但目前普遍使用的軟件工程定義是由IEEE給出的,即軟件工程是將系統性的、規範化的、可定量的方法應用於軟件的開發、運行和維護。軟件工程概念實際存在兩層含義,從狹義概念看,軟件工程著重體現在軟件過程中所采用的工程方法和管理體系,例如,引入成本核算、質量管理和項目管理等,即將軟件產品開發看作是壹項工程項目所需要的系統工程學和管理學。從廣義概念看,軟件工程涵蓋了軟件生命周期中所有的工程方法、技術和工具,包括需求工程、設計、編程、測試和維護的全部內容,即完成壹個軟件產品所必備的思想、理論、方法、技術和工具。 2.軟件工程的內涵軟件工程學科包含為完成軟件需求、設計、構建、測試和維護所需的知識、方法和工具。軟件工程不局限在理論之上,更重要在實踐上,能夠幫助軟件組織協調團隊、運用有限的資源,遵守已定義的軟件工程規範,通過壹系列可復用的、有效的方法,在規定的時間內達到預先設定的目標。針對軟件工程的實施,無論是采用什麽樣的方法和工具,先進的軟件工程思想始終是最重要的。只有在正確的工程思想指導下,才能制定正確的技術路線,才能正確地運用方法和工具達到軟件工程或項目管理的既定目標。 3.軟件工程是壹門交叉性學科軟件工程是壹門交叉性的工程學科,它是將計算機科學、數學、工程學和管理學等基本原理應用於軟件的開發與維護中,其重點在於大型軟件的分析與評價、規格說明、設計和演化,同時涉及管理、質量、創新、標準、個人技能、團隊協作和專業實踐等。從這個意義上看,軟件工程可以看作由下列3部分組成。計算機科學和數學用於構造軟件的模型與算法;工程科學用於制定規範、設計範型、評估成本以及確定權衡等;管理科學用於計劃、資源、質量、成本等管理。例如,計算機輔助軟件工程(Computer Aided Software Engineering,CASE)是壹組工具和方法的集合,可以輔助軟件生命周期各階段進行的軟件開發活動。CASE吸收了CAD(計算機輔助設計)、軟件工程、操作系統、數據庫、網絡和許多其他計算機領域的原理和技術。這個例子也體現了這壹點——軟件工程是學科交叉的、集成和綜合的領域。 4.軟件工程學科範圍如果從知識領域看,軟件工程學科是以軟件方法和技術為核心,涉及計算機的硬件體系、系統基礎平臺等相關領域,同時還要涉及壹些應用領域和通用的管理學科、組織行為學科。例如,通過應用領域的知識幫助我們理解用戶的需求,從而可以根據需求來設計軟件的功能。在軟件工程中必然要涉及組織中應用系統的部署和配置所面臨的實際問題,同時又必須不斷促進知識的更新和理論的創新。為了真正解決實際問題,需要在理論和應用上獲得最佳平衡。 先進、成熟的軟件工程思想有哪些? 代碼評審的最佳實踐