爲克服軟件危機,1988年10月在北大西洋公約組織(NATO)召開的計算機科學會議上,Fritz Bauer首次提出「軟件工程」的概念,試圖將工程化方法應用於軟件開發。而自軟件工程的概念提出以來,對其定義就有不一樣說法:web
Barry Boehm:運用現代科學技術知識來設計並構造計算機程序及爲開發、運行和維護這些程序所必需的相關文件資料。
IEEE:在軟件工程術語彙編中的定義:軟件工程是:1.將系統化的、嚴格約束的、可量化的方法應用於軟件的開發、運行和維護,即將工程化應用於軟件;2.在1中所述方法的研究。
Fritz Bauer在NATO會議上給出的定義:創建並使用完善的工程化原則,以較經濟的手段得到能在實際機器上有效運行的可靠軟件的一系列方法。數據庫
軟件工程是研究和應用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟件,以及如何把通過時間考驗而證實正確的管理技術和當前可以獲得的最好的技術方法結合起來的學科。它涉及到程序設計語言、數據庫、軟件開發工具、系統平臺、標準、設計模式等方面。設計模式
軟件工程做爲一門獨立的學科,其發展以逾30年。自從高級語言的流行,計算機的應用範圍獲得極大擴展,使用也更爲簡便,對軟件系統的需求急劇上升,從而產生了「軟件危機」,即軟件開發從質量、效率等方面均不能知足應用需求。爲應對軟件危機而出現的軟件工程發展迅速。網絡
昨天,粗略看了一下楊芙清教授的《軟件工程技術發展思索》,文中從四個方面對軟件工程技術的發展進行了一些思索:(1)從事物發展規律的角度,揭示軟件工程技術的發展歷程;(2)從軟件本質特徵的角度,淺析虛擬機各抽象層次的構造;(3)從軟件卡發的本質出發,提出了軟件工程學科研究的內容,並研究了軟件工業化生產模式;(4)以Internet的出現爲背景,探索了軟件技術的發展趨勢。模塊化
文中觀點提到,軟件開發的本質就是要實現「高層概念」到「底層概念」的映射,實現「高層處理邏輯」到「低層處理邏輯」的映射。並把軟件工程定義爲:軟件工程是應用計算機科學理論和技術以及工程管理原則和方法,按照預算和進度,實現知足用戶要求的軟件產品的定義、開發、發佈和維護的工程或以之爲研究對象的學科。文章還提出了軟件工程的基本原則:(1)選取適宜的開發風範,以保證軟件開發的可持續性,並使最終的軟件產品知足客戶的要求。(2)採用合適的設計方法,支持模塊化、信息隱蔽、局部化、一致性、適應性、構造性、集成組裝性等問題的解決和實現,以達到軟件工程的目標。(3)提供高質量的工程支持,提供必要的工程支持,例如管理配置、質量保證等工具和環境,以保證定期交付高質量的軟件產品。(4)有效的軟件工程管理。楊教授認爲將來軟件的環境將從靜態封閉逐步走向開放、動態和多變,具備自主性、協同性、反應性、演化性以及多態性等特徵,並提出軟件技術的整體發展趨勢能夠歸結爲軟件平臺網絡化、方法對象化、系統構件化、產品家族化、開發工程化、過程規範化、生產規模化、競爭國際化。整篇文章對軟件工程技術發展歷程中的若干問題作了一些探索,其探索結果給與人們更深遠的思考,並有其積極意義,能讓人得到必定程度的收穫。工具