SWSAD - Homework 1

SWSAD - Homework 1

Software System Analysis and Design

軟件的本質與軟件工程科學

  1. 軟件工程的定義

    根據IEEE Standard 610.12給出的定義,軟件工程是

    (1)將系統化的、規範的、可度量的方法應用於軟件的開發、運行和維護,即將工程化方法應用於軟件;(2)在(1)中所述方法的研究。

  2. 解釋導致 software crisis 本質原因、表現,述說克服軟件危機的方法

    本質原因:

    軟件危機的出現是由於計算機能力的迅速增加以及無法解決的問題的複雜性。由於計算機的計算能力快速增長,需要解決的問題更加複雜。隨着軟件複雜性的增加,因爲現在的解決方法不足,許多軟件問題出現。

    • 軟件危機的根源
      • 軟件的大量需求與軟件生產力效率之間的矛盾
      • 軟件系統的複雜性與軟件開發方法之間的矛盾
    • 軟件本身的特點
      • 軟件是一種抽象邏輯
      • 軟件是開發人員的智力勞動成果
      • 軟件具備強烈的個性化特徵
      • 軟件規模日趨龐大,實現的業務邏輯與流程複雜
    • 軟件開發的客觀因素
      • 系統需求分析不足
      • 開發週期管理不善
      • 開發過程缺乏規範(軟件開發不等於程序編寫)
      • 質量控制標準規程滯後
      • 軟件維護計劃被忽視
    • 軟件開發的產業因素
      • 軟件企業的作坊式管理
      • 軟件企業規模的急劇膨脹

    表現:

    • 項目運行超預算
    • 項目運行時間過長
    • 軟件效率很低
    • 軟件質量很差
    • 軟件通常不符合要求
    • 項目難以管理,代碼難以維護
    • 軟件從未交付過

    克服軟件危機的方法:

    用現代工程的概念,原理,技術和方法進行計算機軟件的開發,管理和維護,由此誕生了軟件工程。軟件工程主要研究軟件生產的客觀規律性,建立與系統化軟件生產有關的概念、原則、方法、技術和工具,指導和支持軟件系統的生產活動,以期達到降低軟件生產成本 、改進軟件產品質量、提高軟件生產率水平的目標。

    • 正確認識計算機軟件的內涵。
    • 採用工程項目管理方法實施軟件開發的組織管理。軟件開發應該是一種組織良好、管理嚴密、協同配合的工程活動。
    • 採用成熟的軟件開發技術和方法,開發和使用適當的軟件工具。
  3. 軟件生命週期

    軟件生命週期 (Software Life Cycle, SLC) 是軟件的產生直到報廢或停止使用的生命週期。週期內有問題定義、可行性分析、總體描述、系統設計、編碼、調試和測試、驗收與運行、維護升級到廢棄等階段,這種按時間分程的思想方法是軟件工程中的一種思想原則,即按部就班、逐步推進,每個階段都要有定義、工作、審查、形成文檔以供交流或備查,以提高軟件的質量。常見有瀑布模型、螺旋模型、敏捷的模型等。

  4. SWEBoK 的 15 個知識域(An Overview of the SWEBOK Guide 請中文翻譯其名稱與簡短說明)

    描述軟件工程實踐的知識域:

    • 軟件需求 (Software Requirements)

      軟件需求知識域涉及軟件需求的引出、協商、分析、規範和確認。軟件行業普遍承認,當這些活動執行得不好時,軟件工程項目極易受到攻擊。軟件需求表示對軟件產品的需求和約束,這些需求和約束有助於解決一些實際問題。

    • 軟件設計 (Software Design)

      軟件設計被定義爲定義系統或組件的架構、組件、接口和其他特性的過程,以及(該)過程的結果(IEEE 1991)。

    • 軟件構造 (Software Construction)

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

    • 軟件測試 (Software Testing)

      測試是一項評估產品質量並通過識別缺陷來改進產品質量的活動。軟件測試涉及根據有限的測試用例集上的預期行爲對程序行爲進行動態驗證。這些測試用例是從(通常非常大)執行域中選擇的。

    • 軟件維護 (Software Maintenance)

      軟件維護包括增強現有的能力,使軟件適應新的和修改過的操作環境,以及糾正缺陷。這些類別被稱爲完善的、適應性的和糾正性的軟件維護。

    • 軟件配置管理 (Software Configuration Management)

      系統的配置是硬件、固件、軟件的功能和/或物理特性,或這些特性的組合。它還可以被視爲硬件、固件或軟件項的特定版本的集合,根據特定的構建過程進行組合以滿足特定的目的。

    • 軟件工程管理 (Software Engineering Management)

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

    • 軟件工程過程 (Software Engineering Process)

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

    • 軟件工程模型和方法 (Software Engineering Models and Methods)

      軟件工程模型和方法知識域描述了包含多個生命週期階段的方法;特定於特定生命週期階段的方法由其他知識域涵蓋。

    • 軟件質量 (Software Quality)

      軟件質量是一個普遍存在的軟件生命週期問題,在許多Swebok v3 KAS中都有解決。

    • 軟件工程職業實踐 (Software Engineering Professional Practice)

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

    描述軟件工程教育要求的知識域:

    • 軟件工程經濟學 (Software Engineering Economics)

      軟件工程經濟學知識域關注於在業務環境中做出決策,以使技術決策與組織的業務目標保持一致。

    • 計算基礎 (Computing Foundations)

      計算基礎知識域涵蓋了爲軟件工程實踐提供必要計算背景的基本主題。

    • 數學基礎 (Mathematical Foundations)

      數學基礎知識域涵蓋了爲軟件工程實踐提供必要數學背景的基本主題。

    • 工程基礎 (Engineering Foundations)

      工程基礎知識域涵蓋了爲軟件工程實踐提供必要工程背景的基本主題。

  5. 簡單解釋 CMMI 的五個級別。例如:Level 1 - Initial:無序,自發生產模式。

    • Level 1 - Initial:初始級。軟件過程是無序的,有時甚至是混亂的,對過程幾乎沒有定義,成功取決於個人努力。管理是反應式的。
    • Level 2 - Managed:可管理級。建立了基本的項目管理過程來跟蹤費用、進度和功能特性。制定了必要的過程紀律,能重複早先類似應用項目取得的成功經驗。
    • Level 3 - Defined:已定義級。已將軟件管理和工程兩方面的過程文檔化、標準化,並綜合成該組織的標準軟件過程。所有項目均使用經批准、剪裁的標準軟件過程來開發和維護軟件,軟件產品的生產在整個軟件過程是可見的。
    • Level 4 - Quantitatively Managed:量化管理級。分析對軟件過程和產品質量的詳細度量數據,對軟件過程和產品都有定量的理解與控制。管理有一個作出結論的客觀依據,管理能夠在定量的範圍內預測性能。
    • Level 5 - Optimizing:優化管理級。過程的量化反饋和先進的新思想、新技術促使過程持續不斷改進。
  6. 用自己語言簡述 SWEBok 或 CMMI (約200字)

    • SWEBok:軟件工程知識體系指南。爲了克服軟件危機,IEEE 總結了軟件工程核心知識體系的指南,描述了構建軟件生產的最佳實踐與公認的軟件工程知識的框架。它的目的有:描述軟件工程學科的內容;促進對全球軟件工程的一致看法;明確軟件工程相對於其他專業的位置和界限;爲培訓材料和課程開發提供基礎;爲軟件工程師的認證和許可提供依據。SWEBokV3包含15個知識域,幷包括一個引用列表,指向更詳細的信息。SWEBok很好地總結了與軟件工程相關的知識域。
    • CMMI:能力成熟度模型集成。CMMI是一個過程級改進培訓和評估計劃。它的目的是幫助軟件企業對軟件工程過程進行管理和改進,增強開發與改進能力,從而能按時地、不超預算地開發出高質量的軟件。CMMI根據企業的知識能力的不同,用5個級別(初始級、可管理級、已定義級、量化管理級、優化管理級)表示了企業的成熟程度,給出了企業的能力提升路徑和企業能力評估的標準。CMMI能爲企業帶來價值,如幫助企業保證軟件開發的質量與進度、控制成本、提高軟件開發者的職業素養和提高管理水平等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章