系統分析與設計-軟件的本質與軟件工程科學

系統分析與設計-軟件的本質與軟件工程科學

軟件工程的定義

  • IEEE(普遍使用)
    軟件工程是:
    1.將系統化的、規範的、可度量的方法應用於軟件的開發、運行和維護,即將工程化方法應用於軟件
    2.在1中所述方法的研究

  • 美國卡內基梅隆大學軟件工程研究所(SEI)
    軟件工程是以工程的形式應用計算機科學和數學原理,從而經濟有效地解決軟件問題

  • 最早的定義由F.L. Bauer給出
    軟件工程是爲了經濟地獲得能夠在實際機器上高效運行的、可靠的軟件而建立和應用一系列堅實的軟件工程原則

從概念上看,軟件工程覆蓋了軟件生命週期中所有的工程方法、技術和工具,着重體現於在產生軟件過程中所採用的方法和管理體系。

軟件危機

原因

由於軟件的規模越來越大,複雜度不斷增加,軟件需求量增大。而軟件開發過程是一種高密集度的腦力勞動,所以落後的軟件生產方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發與維護過程中出現一系列嚴重問題的現象。產生軟件危機的原因主要如下有兩方面:

  • 與軟件本身的特點有關
    在寫出程序代碼並在計算機上試運行之前,軟件開發過程的進展情況較難衡量,軟件質量也較難評價,軟件質量是根據與每一個組成部分不同實體的質量緊密相關,因此管理和控制軟件開發過程十分困難。當人們的應用需求變化發展的時候,往往要求通過改變軟件來使計算機系統滿足新的需求,維護用戶業務的延續性。

  • 軟件開發人員的弱點
    軟件是開發人員的思維結果所以最後軟件的質量與開發人員的水平有關,而且一些大型軟件需要多人合作開發,在開發人員之間的溝通和協調也可能導致軟件的錯誤。計算機技術和應用發展迅速,軟件開發人員需要不斷適應新的硬件更新和擴展自己的知識等。

表現

出現的軟件危機主要表現在:

  1. 軟件產品質量低劣,可靠性差,系統正確性難以保證。
  2. 軟件生產率低,不能滿足需要。軟件的開發費用或者進度出現失控,費用超支進度拖延等使得軟件質量無法保證。
  3. 生產的軟件難以維護,因爲缺乏相應的文檔資料,程序的錯誤難以定位和修正。

克服軟件危機的方法

軟件工程從硬件工程和其他工程中吸取了很多成功經驗,明確提出了軟件生命週期的模型,發展了許多軟件開發與維護階段適用的技巧與方法,並用於實踐中。

  1. 在軟件開發過程中研製和使用軟件工具,用來輔助進行軟件項目管理與技術生產,將軟件生命週期各階段使用的軟件工具整合爲整體,使其能夠連續支持軟件開發與維護全過程的集成化軟件支持環境,從管理和技術兩方面解決軟件危機。

  2. 人工智能與軟件工程的結合使程序設計進一步自動化,基於程序變換、自動生成和可重用軟件等新技術也取得一定進展。軟件標準化與可重用性也使得減緩軟件危機。

軟件生命週期

在時間維度,對軟件項目任務進行劃分,又成爲軟件開發過程。常見有瀑布模型、螺旋模型、敏捷的模型等。

軟件生命週期是按開發軟件的規模和複雜程度,從時間上把軟件開發的整個過程進行分解,形成相對獨立的幾個階段,每個階段又分解成幾個具體的任務,然後按規定順序依次完成各階段的任務並規定一套標準的文檔作爲各個階段的開發成果,最後生產出高質量的軟件。

SWEBoK 的 15 個知識域

爲了克服軟件危機,IEEE Computer Society 構建軟件生產的最佳實踐與相關知識的框架,稱爲 Software Engineering Body of Knowledge。指導軟件工程人才的培養與學科建設。
2014 V3 版的 SWEBoK 將知識分爲軟件工程實踐和基礎教育兩個部分,共 15 個知識域(knowledge areas / KAs)。Software Requirements,Software Design 是其中最重要的兩個領域。

2014 V3 版的 SWEBoK 其中包括了11個軟件工程實踐知識域:

  • 軟件需求
    軟件需求表示對軟件產品的需求和一些約束,有助於解決一些實際問題。

  • 軟件設計
    軟件設計是定義軟件系統或組件的架構,組件,接口和其他特性。需要設計軟件架構,例如組件如何分解與組織,以及組件之間的接口。

  • 軟件構造
    軟件構造是指通過詳細設計、編碼、單元測試、集成測試、調試和驗證的組合來詳細構造軟件。

  • 軟件測試
    軟件測試是一項評估產品質量並通過識別缺陷來改進產品質量的活動。軟件測試根據有限的測試用例集上的預期行爲對程序執行結果進行動態驗證。

  • 軟件維護
    軟件維護包括增強現有的能力,使軟件適應新的和修改過的操作環境,以及糾正缺陷。

  • 軟件配置管理
    軟件配置管理在不同的時刻識別系統配置,目的是系統地控制配置的更改,並在整個軟件生命週期中保持配置的完整性和可追溯性。

  • 軟件工程管理
    軟件工程管理包括計劃、協調、測量、報告和控制項目或程序,以確保軟件的開發和維護是系統的、有紀律的和可量化的。

  • 軟件工程過程
    軟件工程過程涉及軟件生命週期過程的定義、實現、評估、測量、管理和改進。

  • 軟件工程模型與方法
    軟件工程模型和方法描述了包含多個生命週期階段的方法。包括建模、模型類型、分析和軟件開發方法等。

  • 軟件質量
    軟件質量包括軟件質量基礎(軟件工程文化、軟件質量特徵、軟件質量的價值和成本以及軟件質量改進),軟件質量管理過程以及實用性等。

  • 軟件工程職業實踐
    軟件工程職業實踐涉及軟件工程師以專業、負責和道德的方式實踐軟件工程所必須具備的知識、技能和態度。

2014 V3 版的 SWEBoK 其中包括了4個軟件工程教育基礎知識域:

  • 軟件工程經濟學
    軟件工程經濟學主要在業務環境中做出決策,以使技術決策與組織的業務目標保持一致。包括軟件工程經濟學基礎,估算、經濟風險和不確定性等。

  • 計算基礎
    計算基礎爲軟件工程實踐提供必要計算基礎知識。包括問題解決技術、抽象、算法和複雜性、編程基礎、並行和分佈式計算基礎、計算機組織、操作系統和網絡通信等。

  • 數學基礎
    數學基礎爲軟件工程實踐提供必要數學背景的基本主題。包括集合、關係和函數,基本命題和謂詞邏輯,證明技術,圖和樹,離散概率,語法和有限狀態機,以及數論。

  • 工程基礎
    工程基礎爲軟件工程實踐提供必要工程知識。包括經驗方法和實驗技術,統計分析,測量和度量,工程設計,模擬和建模等。

簡單解釋 CMMI 的五個級別

  1. Level 1 - Initial:無序、隨機和混亂的,組織通常沒有一個穩定的環境,自發生產模式。
  2. Level 2 - Managed:組織中的項目確保需求得到管理,過程已經計劃、執行、度量和控制。
  3. Level 3 - Defined:用標準、規程、工具和方法表示了過程,組織級標準過程得到建立並不斷改進,軟件開發按照定義的過程、標準和方法執行。
  4. Level 4 - Quantitatively Managed:對軟件過程和產品質量有詳細度量數據,並且都有定量的理解與控制。
  5. Level 5 - Optimizing:過程的量化反饋和先進的新思想、新技術促使過程不斷持續和改進。

簡述 CMMI

  1. CMMI是能力成熟度模型集成,可以用於指導整個項目、部門或整個組織的流程改進。CMMI爲流程定義了五個成熟度級別:初始、管理、定義、定量管理和優化。其目的是幫助軟件企業對軟件工程過程進行管理和改進,增強開發與改進能力,從而能按時地、不超預算地開發出高質量的軟件,一定程度上避免了軟件危機。

  2. CMMI爲改進組織的各種過程提供了一個單一的集成化框架,該框架消除了各個模型的不一致性,減少了模型間的重複,建立了一個自動的、可擴展的框架。所以能夠從總體上改進組織的質量和效率。

  3. 它用不同級別表示開發企業的成熟性,不僅給出了企業能力提升的路徑,也給出了企業能力評估的事實標準。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章