計算機學科 軟體工程

2021-10-06 11:41:23 字數 2544 閱讀 8739

軟體工程是研究和應用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟體,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科。它涉及到程式語言、資料庫、軟體開發工具、系統平台、標準、設計模式等方面。

軟體工程一直以來都缺乏乙個統一的定義,很多學者、組織機構都分別給出了自己的定義:

ieee:在軟體工程術語彙編中的定義:軟體工程是:1.將系統化的、嚴格約束的、可量化的方法應用於軟體的開發、執行和維護,即將工程化應用於軟體;2.在1中所述方法的研究

fritzbauer:在nato會議上給出的定義:建立並使用完善的工程化原則,以較經濟的手段獲得能在實際機器上有效執行的可靠軟體的一系列方法。

《計算機科學技術百科全書》:軟體工程是應用電腦科學、數學、邏輯學及管理科學等原理,開發軟體的工程。軟體工程借鑑傳統工程的原則、方法,以提高質量、降低成本和改進演算法。其中,電腦科學、數學用於構建模型與演算法,工程科學用於制定規範、設計范型(paradigm)、評估成本及確定權衡,管理科學用於計畫、資源、質量、成本等管理。

比較認可的一種定義認為:軟體工程是研究和應用如何以系統性的、規範化的、可定量的過程化方法去開發和維護軟體,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來。

內涵:一、軟體工程過程是指為獲得軟體產品,在軟體工具的支援下由軟體工程師完成的一系列軟體工程活動,包括以下四個方面:

1、p(plan)——軟體規格說明。規定軟體的功能及其執行時的限制。

2、d(do)——軟體開發。開發出滿足規格說明的軟體。

3、c(check)——軟體確認。確認開發的軟體能夠滿足使用者的需求。

4、a(action)——軟體演進。軟體在執行過程中不斷改進以滿足客戶新的需求。

二、從軟體開發的觀點看,它就是使用適當的資源(包括人員,軟硬體資源,時間等),為開發軟體進行的一組開發活動,在活動結束時輸入(即使用者的需求)轉化為輸出(最終符合使用者需求的軟體產品)。三個階段:定義階段:可行性研究初步專案計畫、需求分析; 開發階段:概要設計、詳細設計、實現、測試;執行和維護階段:執行、維護、廢棄原則:1、抽象;2、資訊隱蔽;3、模組化;4、區域性化;5、確定性;6,一致性;7、完備性;8、可驗證性

軟體是由電腦程式和程式設計的概念發展演化而來的,是在程式和程式設計發展到一定規模並且逐步商品化的過程中形成的。軟體開發經歷了程式設計階段、軟體設計階段和軟體工程階段的演變過程。

程式設計階段

程式設計階段出現在2023年~2023年。此階段的特點是:尚無軟體的概念,程式設計主要圍繞硬體進行開發,規模很小,工具簡單,無明確分工(開發者和使用者),程式設計追求節省空間和程式設計技巧,無文件資料(除程式清單外),主要用於科學計算。

軟體設計階段

軟體設計階段出現在2023年~2023年。此階段的特點是:硬體環境相對穩定,出現了「軟體作坊」的開發組織形式。開始廣泛使用產品軟體(可購買),從而建立了軟體的概念。隨著計算機技術的發展和計算機應用的日益普及,軟體系統的規模越來越龐大,高階程式語言層出不窮,應用領域不斷拓寬,開發者和使用者有了明確的分工,社會對軟體的需求量劇增。但軟體開發技術沒有重大突破,軟體產品的質量不高,生產效率底下,從而導致了「軟體危機」的產生。

軟體工程階段

自2023年起,軟體開發進入了軟體工程階段。由於「軟體危機」的產生,迫使人們不得不研究、改變軟體開發的技術手段和管理方法。從此軟體產生進入了軟體工程時代。此階段的特定是:硬體已向巨型化、微型化、網路化和智慧型化四個方向發展,資料庫技術已成熟並廣泛應用,第三代、***語言出現;第一代軟體技術:結構化程式設計在數值計算領域取得優異成績;第二代軟體技術:軟體測試技術、方法、原理用於軟體生產過程;第三代軟體技術:處理需求定義技術用於軟體需求分析和描述。

軟體工程的目標是:在給定成本、進度的前提下,開發出具有適用性、有效性、可修改性、可靠性、可理解性、可維護性、可重用性、可移植性、可追蹤性、可互操作性和滿足使用者需求的軟體產品。追求這些目標有助於提高軟體產品的質量和開發效率,減少維護的困難。

(1)適用性:軟體在不同的系統約束條件下,使使用者需求得到滿足的難易程度。

(2)有效性:軟體系統能最有效的利用計算機的時間和空間資源。各種軟體無不把系統的時/空開銷作為衡量軟體質量的一項重要技術指標。很多場合,在追求時間有效性和空間有效性時會發生矛盾,這時不得不犧牲時間有效性換取空間有效性或犧牲空間有效性換取時間有效性。時/空折衷是經常採用的技巧。

(3)可修改性:允許對系統進行修改而不增加原系統的複雜性。它支援軟體的除錯和維護,是乙個難以達到的目標。

(4)可靠性:能防止因概念、設計和結構等方面的不完善造成的軟體系統失效,具有挽回因操作不當造成軟體系統失效的能力。

(5)可理解性:系統具有清晰的結構,能直接反映問題的需求。可理解性有助於控制系統軟體複雜性,並支援軟體的維護、移植或重用。

(6)可維護性:軟體交付使用後,能夠對它進行修改,以改正潛伏的錯誤,改進效能和其它屬性,使軟體產品適應環境的變化等。軟體維護費用在軟體開發費用中占有很大的比重。可維護性是軟體工程中一項十分重要的目標。

(8)可移植性:軟體從乙個計算機系統或環境搬到另乙個計算機系統或環境的難易程度。

(9)可追蹤性:根據軟體需求對軟體設計、程式進行正向追蹤,或根據軟體設計、程式對軟體需求的逆向追蹤的能力。

(10)可互操作性:多個軟體元素相互通訊並協同完成任務的能力。

電腦科學和軟體工程的區別

微軟windows部門總裁 steven sinofsky上週離職,接替者是他的助手julie larson gree。兩人有著不同的教育背景 根據微軟 的介紹,steven sinofsky擁有麻薩諸塞大學的電腦科學碩士學位和康奈爾大學的榮譽學士學位,larson green擁有西雅圖大學的軟體工...

軟體工程與電腦科學的區別

1 首先,軟體工程是一門學科,用於研究用工程化方法構建和維護有效的 實用的和高質量的軟體 而電腦科學是一門科學領域,用於研究計算機及其周圍各種現象和規律的科學,亦即研究計算機系統結構 程式系統 即軟體 人工智慧以及計算本身的性質和問題。所以從本質上來說,我認為電腦科學包含了軟體工程,而軟體工程只是電...

計算機學科脈絡梳理

加粗的是我喜歡的。計算理論 peter j.denning 什麼能被計算 遞迴論 實施這些計算所需資源 計算複雜性理論 p np?自動機理論,密碼學,量子計算 書 introduction to the theory of computation sipser 灰姑娘書,龍書 演算法與資料結構 演算...