系統分析與設計基本概念總結


本次分享是以簡答題形式,對軟件工程領域的一些概念進行概括性描述。

1.軟件工程的定義

在這裡插入圖片描述
軟件工程
(1)對軟件的開發、操作和維護應用一種系統的、有紀律的、可量化的方法,即工程對軟件的應用。
(2)對(1)方法的研究。

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

軟件危機的原因與硬件和軟件開發過程的總體複雜性有關。主要原因是計算能力的提高已經超過了程序員有效利用這些能力的能力。

導致 software crisis本質原因:

  • 軟件的大量需求與軟件生產力效率之間的矛盾
  • 軟件系統的複雜性與軟件開發方法之間的矛盾

導致 software crisis客觀因素:

  • 系統需求分析不足
  • 開發週期管理不善
  • 開發過程缺乏規範(軟件開發 =?程序編寫)
  • 質量控制標準規程滯後
  • 軟件維護計劃被忽視

導致 software crisis產業因素:

  • 軟件企業的作坊式管理
  • 軟件企業規模的急劇膨脹

software crisis的表現形式:

  • Projects running over-budget 項目運行超過預算
  • Projects running over-time 項目運行的超時
  • Software was very inefficient 軟件效率很低
  • Software was of low quality 軟件質量很差
  • Software often did not meet requirements 軟件常常不能滿足需求
  • Projects were unmanageable and code difficult to maintain 項目是不可管理的,代碼很難維護
  • Software was never delivered 軟件從未交付

克服software crisis的方法:

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

3.軟件生命週期

軟件生命週期的概念:

  • 計算機軟件有一個孕育、誕生、成長、成熟、衰亡的生存過程,這 樣的過程稱為軟件的生命週期 (也稱軟件開發生命週期 SDLC)。軟件生命週期將軟件開發過程劃分為若干階段,每個階段有明確的任務 目標和運行機制,從而使複雜的軟件開發過程能夠得到適當的控制 和管理。

  • 軟件生命週期一般包括可行性分析與計劃、需求分析、設計 (概要 設計和詳細設計)、編碼實現、測試、運行與維護等活動。這些活動應當以適當的方式分配到不同的階段去完成。

軟件生命週期的6個階段:

  • 可行性分析與計劃階段

    確定軟件開發的總體目標,給出功能、性能、可靠性以及接口 等方面的要求,進行可行性分析。

    估計可利用的開發資源 (硬件、軟件、人力等)、成本、效益、 開發進度,進行投資-收益分析,制訂開發計劃。

    提交可行性分析報告、開發計劃等文檔。

  • 需求分析階段

    分析用戶提出的要求,給出用戶需求詳細定義,確定軟件系統 的各項功能、性能需求和設計約束,確定對文檔編制的要求。

    提交軟件需求說明、軟件規格說明、數據要求說明等文檔和初
    步的用戶手冊。

  • 設計階段

    概要設計/邏輯設計:把各項軟件需求轉換成軟件的體系結構。 結構中的每一個組成部分意義明確,並和某些需求相對應。

    詳細設計/物理設計:對按照概要設計分解的每個模塊所要完成 的工作進行具體的描述,提供源程序代碼編寫的直接依據。

    提交概要結構設計說明書、詳細設計說明書和測試計劃初稿等文檔。

  • 實現階段

    完成源程序的編碼、編譯 (或匯編) 和運行調試,得到沒有語法 錯誤的程序清單。程序結構良好、清晰易讀,且與設計相一致。

    編寫進度日報、周報和月報 (取決於項目的重要性和規模)。

    編制測試計劃。

    提交用戶手冊、操作手冊等面向用戶的文檔。

  • 測試階段

    全面測試目標軟件系統,並檢查審閱已編制的文檔,提交測試 分析報告。逐項評價所實現的程序、文檔以及開發工作本身, 提交項目開發總結報告。

  • 運行與維護階段

    軟件提交給用戶後,在運行使用中得到持續維護,根據用戶新
    提出的需求進行必要而且可能的擴充、刪改、更新和升級。

    軟件維護包括改正性維護 (發現錯誤)、適應性維護 (適應運行環
    境變化) 和完善性維護 (增強功能)。

軟件生命週期的前五個階段也合稱開發階段。在整個開發階段,開
發團隊需要按月編寫開發進度月報。

4.SWEBoK 的 15 個知識域

  • 軟件需求

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

  • 軟件設計

​ 設計被定義為定義系統或組件的架構、組件、接口和其他特性的過程,以及[該]過程的結果(IEEE 1991)。軟件設計KA涵蓋了設計過程和最終產品。軟件設計過程是軟件工程生命週期活動,在該活動中分析軟件需求,以便對軟件的內部結構及其行為進行描述,作為其構建的基礎。軟件設計(結果)必須描述軟件架構——也就是說,軟件是如何分解和組織成組件的,以及這些組件之間的接口。它還必須在細節層次上描述組件,以實現其構造。

  • 軟件建設

​ 軟件構建是指通過詳細設計、編碼、單元測試、集成測試、調試和驗證的組合來詳細創建工作軟件。軟件構建KA包括與滿足其需求和設計約束的軟件程序開發相關的主題。本KA涵蓋軟件構建基礎知識、管理軟件構建、構建技術、實踐考慮和軟件構建工具。

  • 軟件測試

​ 測試是一項評估產品質量並通過識別缺陷來改進產品質量的活動。軟件測試涉及根據有限的測試用例集上的預期行為對程序行為進行動態驗證。這些測試用例是從(通常非常大)執行域中選擇的。軟件測試KA包括軟件測試的基礎知識、測試技術、人機界面測試和評估、測試相關措施和實際考慮。

  • 軟件維護

​ 軟件維護包括增強現有的能力,使軟件適應新的和修改過的操作環境,以及糾正缺陷。這些類別被稱為完善的、適應性的和糾正性的軟件維護。軟件維護KA包括軟件維護的基礎知識(維護的性質和需要、維護的類別、維護成本);軟件維護中的關鍵問題(技術問題、管理問題、維護成本估算、軟件維護的測量);維護過程;軟件維護技術(程序理解、重新設計、逆向工程、重構、軟件退役);災難恢復技術和軟件維護工具

  • 軟件配置管理

​ 系統的配置是硬件、固件、軟件的功能和/或物理特性,或這些特性的組合。它還可以被視為硬件、固件或軟件項的特定版本的集合,根據特定的構建過程進行組合以滿足特定的目的。因此,軟件配置管理(SCM)是一門在不同的時間點識別系統配置的學科,目的是系統地控制配置的更改,並在整個軟件生命週期中保持配置的完整性和可追溯性。軟件配置管理KA包括對SCM過程的管理;軟件配置識別、控制、狀態覈算、審核;軟件發佈管理和交付;以及軟件配置管理工具。

  • 軟件工程管理

​ 軟件工程管理包括計劃、協調、測量、報告和控制項目或程序,以確保軟件的開發和維護是系統的、有紀律的和量化的。軟件工程管理KA包括啓動和範圍定義(確定和協商需求、可行性分析以及需求的評審和修訂);軟件項目規劃(過程規劃、工作量、成本和進度估計、資源分配、風險分析、質量規劃);軟件項目E投資(測量、報告和控制;採購和供應商合同管理);產品驗收;項目績效的審查和分析;項目結束;以及軟件管理工具。

  • 軟件工程過程

​ 軟件工程KA涉及軟件生命週期過程的定義、實現、評估、測量、管理和改進。所涵蓋的主題包括過程實施和變更(過程基礎設施、過程實施和變更模型以及軟件過程管理);過程定義(軟件生命週期模型和過程、過程定義注釋、過程適應和過程自動化);過程評估模型和方法;度量(過程測量、產品測量、測量技術和測量結果質量)和軟件過程工具。

  • 軟件工程模型與方法

​ 軟件工程模型和方法KA描述了包含多個生命週期階段的方法;特定於特定生命週期階段的方法由其他KA涵蓋。所涵蓋的主題包括建模(軟件工程模型的原理和屬性;語法與語義與不變量;前提條件、後條件和不變量);模型類型(信息、結構和行為模型);分析(分析正確性、完整性、一致性、質量和交互;可追溯性和權衡分析);和軟件開發方法(啓發式方法、形式方法、原型方法和敏捷方法)。

  • 軟件質量

​ 軟件質量是一個普遍存在的軟件生命週期問題,在許多Swebok v3 KAS中都有解決。此外,軟件質量KA包括軟件質量基礎(軟件工程文化、軟件質量特徵、軟件質量的價值和成本以及軟件質量改進);軟件質量管理過程(軟件質量保證、驗證和確認、評審和審計);以及實用性。l注意事項(缺陷描述、軟件質量度量和軟件質量工具)。

  • 軟件工程專業實踐

​ 軟件工程專業實踐涉及軟件工程師以專業、負責和道德的方式實踐軟件工程所必須具備的知識、技能和態度。軟件工程專業實踐KA涵蓋專業性(專業行為、專業協會、軟件工程標準、雇傭合同和法律問題);道德規範;群體動力學(團隊合作、認知問題複雜性、與利益相關者互動、處理不確定性和模糊性、處理具有多元文化環境);以及溝通技巧。

  • 軟件工程經濟學

​ 軟件工程經濟學KA關注於在業務環境中做出決策,以使技術決策與組織的業務目標保持一致。所涵蓋的主題包括軟件工程經濟學基礎(提案、現金流、貨幣時間價值、規劃範圍、通貨膨脹、折舊、重置和退休決策);非營利決策(成本效益分析、優化分析);估算、經濟風險和不確定性(估算技術,DEC)風險和不確定性下的ISION);以及多屬性決策(價值和測量尺度、補償和非補償技術)。

  • 計算基礎

​ KA計算基礎涵蓋了為軟件工程實踐提供必要計算背景的基本主題。所涵蓋的主題包括問題解決技術、抽象、算法和複雜性、編程基礎、並行和分布式計算基礎、計算機組織、操作系統和網絡通信。

  • 數學基礎

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

  • 工程基礎

​ 工程基礎KA涵蓋了為軟件工程實踐提供必要工程背景的基本主題。涵蓋的主題包括經驗方法和實驗技術;統計分析;測量和度量;工程設計;模擬和建模;以及根本原因分析。

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

  1. Initial:過程不可預測、控制不良和反應性差
  2. Managed:以項目和為特徵的過程通常是反應性的
  3. Defined:以組織為特徵並具有前瞻性的過程。
    (項目根據組織的標準定制其過程)
  4. Quantitatively Managed:測量和控制的過程
  5. Optimizing:專注於流程改進

6.用自己語言簡述 SWEBok 或 CMMI (約200字)

能力成熟度模型集成(CMMI)是一個抽象的模型,可以用於指導項目、部門或者是整個組織的流程改進。它並不是一個標準,只是一個概念模型,一個需要結合具體去實踐。它提供了詳細的抽象信息和示例,但是具體的實現方式還是要取決於體系。CMMI整合傳統上獨立的組織功能,設定流程改進目標和優先級,為質量流程提供指導,並為評估當前流程提供參考。比起SWEBok沒辦法合適的度量一個企業的軟件工程能力,CMMI因為更抽象更適合各種各類的企業去跟隨並使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值