BarryBoehm:運用現代科學技術知識來設計并構造計算機程序及為開發、運行和維護這些程序" />
更新時間:2021-06-08 21:32:57作者:admin2
軟件工程一直以來都缺乏一個統一的定義,很多學者、組織機構都分別給出了自己的定義:
BarryBoehm:運用現代科學技術知識來設計并構造計算機程序及為開發、運行和維護這些程序所必需的相關文件資料。
IEEE:在軟件工程術語匯編中的定義:軟件工程是:1.將系統化的、嚴格約束的、可量化的方法應用于軟件的開發、運行和維護,即將工程化應用于軟件軟件技術專業介紹;2.在1中所述方法的研究
FritzBauer:在NATO會議上給出的定義:建立并使用完善的工程化原則,以較經濟的手段獲得能在實際機器上有效運行的可靠軟件的一系列方法。[1]
《計算機科學技術百科全書》:軟件工程是應
軟件工程
用計算機科學、數學、邏輯學及管理科學等原理,開發軟件的工程。軟件工程借鑒傳統工程的原則、方法,以提高質量、降低成本和改進算法。其中,計算機科學、數學用于構建模型與算法,工程科學用于制定規范、設計范型(paradigm)、評估成本及確定權衡,管理科學用于計劃、資源、質量、成本等管理。[2]
比較認可的一種定義認為:軟件工程是研究和應用如何以系統性的、規范化的、可定量的過程化方法去開發和維護軟件,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。[3]
培養原則
軟件工程領域(管理信息化方向)工程碩士應掌握從事本工程領域堅實的基礎理論和寬廣的專業知識,了解當代信息管理技術發展前沿、應用前景和最新發展動態,能熟練地閱讀本領域的外文資料,掌握解決信息管理問題的先進技術方法和現代技術手段;具有創新意識和獨立承擔軟件工程技術管理或信息系統管理工作的能力。
編輯本段
發展過程
軟件是由計算機程序和程序設計的概念發展演化而來的,是在程序和程序設計發展到一定規模并且逐步商品化的過程中形成的。軟件開發經歷了程序設計階段、軟件設計階段和軟件工程階段的演變過程。
程序設計階段
程序設計階段出現在1946年~1955年。此階段的特點是:尚無軟件的概念,程序設計主要圍繞硬件進行開發,規模很小,工具簡單,無明確分工(開發者和用戶),程序設計追求節省空間和編程技巧,無文檔資料(除程序清單外),主要用于科學計算。
軟件設[4]計階段
軟件設計階段出現在1956年~1970年。此階段的特點是:硬件環境相對穩定,出現了“軟件作坊”的開發組
軟件工程
織形式。開始廣泛使用產品軟件(可購買),從而建立了軟件的概念。隨著計算機技術的發展和計算機應用的日益普及,軟件系統的規模越來越龐大,高級編程語言層出不窮,應用領域不斷拓寬,開發者和用戶有了明確的分工,社會對軟件的需求量劇增。但軟件開發技術沒有重大突破,軟件產品的質量不高,生產效率低下,從而導致了“軟件危機”的產生。
軟件工程階段
自1970年起,軟件開發進入了軟件工程階段。由于“軟件危機”的產生,迫使人們不得不研究、改變軟件開發的技術手段和管理方法。從此軟件產生進入了軟件工程時代。此階段的特定是:硬件已向巨型化、微型化、網絡化和智能化四個方向發展,數據庫技術已成熟并廣泛應用,第三代、第四代語言出現;第一代軟件技術:結構化程序設計在數值計算領域取得優異成績;第二代軟件技術:軟件測試技術、方法、原理用于軟件生產過程;第三代軟件技術:處理需求定義技術用于軟件需求分析和描述。[5]
(關于軟件危機的詳細介紹可以閱讀參考資料:[5])
編輯本段
基本目標
軟件工程的目標是:在給定成本、進度的前提下,開發出具有適用性、有效性、可修改性、可靠性、可理解性、可維護性、可重用性、可移植性、可追蹤性
軟件工程
、可互操作性和滿足用戶需求的軟件產品。追求這些目標有助于提高軟件產品的質量和開發效率,減少維護的困難。
(1)適用性:軟件在不同的系統約束條件下,使用戶需求得到滿足的難易程度。
(2)有效性:軟件系統能最有效的利用計算機的時間和空間資源。各種軟件無不把系統的時/空開銷作為衡量軟件質量的一項重要技術指標。很多場合,在追求時間有效性和空間有效性時會發生矛盾,這時不得不犧牲時間有效性換取空間有效性或犧牲空間有效性換取時間有效性。時/空折衷是經常采用的技巧。
(3)可修改性:允許對系統進行修改而不增加原系統的復雜性。它支持軟件的調試和維護,是一個難以達到的目標。
(4)可靠性:能防止因概念、設計和結構等方面的不完善造成的軟件系統失效,具有挽回因操作不當造成軟件系統失效的能力。
(5)可理解性:系統具有清晰的結構,能直接反映問題的需求。可理解性有助于控制系統軟件復雜性,并支持軟件的維護、移植或重用。
(6)可維護性:軟件交付使用后,能夠對它進行修改,以改正潛伏的錯誤,改進性能和其它屬性,使軟件產品適應環境的變化等。軟件維護費用在軟件開發費用中占有很大的比重。可維護性是軟件工程中一項十分重要的目標。
(7)可重用性:把概念或功能相對獨立的一個或一組相關模塊定義為一個軟部件。可組裝在系統的任何位置,降低工作量。
(8)可移植性:軟件從一個計算機系統或環境搬到另一個計算機系統或環境的難易程度。
(9)可追蹤性:根據軟件需求對軟件設計、程序進行正向追蹤,或根據軟件設計、程序對軟件需求的逆向追蹤的能力。
(10)可互操作性:多個軟件元素相互通信并協同完成任務的能力。[6]
編輯本段
開發過程
生產一個最終能滿足需求且達到工程目標的軟件產品所需要的步驟。軟件工程過程主要包括開發過程、運作過程、維護過程。它們覆蓋了需求、設計、實現、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟件需求規約。需求分析生成功能規約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟件系統結構,包括子系統、模塊以及相關層次的說明、每一模塊的接口定義。詳細設計產生程序員可用的模塊說明,包括每一模塊中數據結構說明及加工描述。實現活動把設計結果轉換為可執行的程序代碼。確認活動貫穿于整個開發過程,實現完成后的確認,保證最終產品滿足用戶的要求。維護活動包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓過程等。[7]
編輯本段
開發原則
軟件工程的原則是指圍繞工程設計、工程支持以及工程管理在軟件開發過程中必須遵循的原則。[7]
軟件工程的原則有以下四項
軟件工程師
基本原則:
選取適宜開發范型
該原則與系統設計有關。在系統設計中,軟件需求、硬件需求以及其他因素之間是相互制約、相互影響的,經常需要權衡。因此,必須認識需求定義的易變性,采用適宜的開發范型予以控制,以保證軟件產品滿足用戶的要求。
采用合適的設計方法
在軟件設計中,通常要考慮軟件的模塊化、抽象與信息隱蔽、局部化、一致性以及適應性等特征。合適的設計方法有助于這些特征的實現,以達到軟件工程的目標。
提供高質量的工程支持
“工欲善其事,必先利其器”。
在軟件工程中,軟件工具與環境對軟件過程的支持頗為重要。軟件工程項目的質量與開銷直接取決于對軟件工程所提供的支撐質量和效用。
重視開發過程的管理
軟件工程的管理,直接影響可用資源的有效利用,生產滿足目標的軟件產品,提高軟件組織的生產能力等問題。因此,僅當軟件過程得以有效管理時,才能實現有效的軟件工程。
這一軟件工程框架告訴我們,軟件工程的目標是可用性、正確性和合算性;實施一個軟件工程要選取適宜的開發范型,要采用合適的設計方法,要提供高質量的工程支撐,要實行開發過程的有效管理;軟件工程活動主要包括需求、設計、實現、確認和支持等活動,每一活動可根據特定的軟件工程,采用合適的開發范型、設計方法、支持過程以及過程管理。根據軟件工程這一框架,軟件工程學科的研究內容主要包括:軟件開發范型、軟件開發方法、軟件過程、軟件工具、軟件開發環境、計算機輔助軟件工程(CASE) 及軟件經濟學等。[8]