1. 程式人生 > >系統分析與設計HW1

系統分析與設計HW1

pro 強調 cost 滿足 測試 dev 單元 智力 錯誤

軟件工程的定義

1993年,電氣電子工程師學會(IEEE)給出了一個定義:"將系統化的、規範的、可度量的方法用於軟件的開發、運行和維護的過程,即將工程化應用於軟件開發中"。

閱讀經典名著“人月神話”等資料,解釋 software crisis、COCOMO 模型。

Software crisis:軟件危機是落後的軟件生產方式無法滿足迅速增長的計算機軟件需求, 從而導致軟件開發與維護過程中出現一系列嚴重問題的現象。 這些嚴重的問題阻礙著軟件生產的規模化、商品化以及生產效率,讓軟件的開發和生產成為制約軟件產業發展的“瓶頸”。

軟件開發是一項高難度、高風險的活動,由於它的高失敗率,故有所謂“軟件危機”之說。軟件危機的本源是復雜、期望和改變。這個術語用來描述正急遽增加之電腦的力量帶來的沖擊和可能要處理的問題的復雜性。

危機表現在幾個方面:

  • 項目運行超出預算。
  • 項目運行超過時間。
  • 軟件質量低落。
  • 軟件通常不匹配需求。
  • 項目無法管理,且代碼難以維護。

軟件危機的原因:

  • 軟件是計算機的邏輯部件而不是物理部件。軟件問題是在開發時期引入的而在測試階段沒能測出來的故障,修改軟件故障要修改軟件原來的設計。

  • 軟件不同於一般程序,它的一個顯著特點是規模龐大,而且程序復雜性將隨著程序規模的增加而呈指數上升。為了在預定時間內開發出規模龐大的軟件,必須由許多人分工合作,軟件開發工作量隨軟件規模增大非線性增長。

  • 與早期軟件開發個體化特點有關:認為軟件開發就是寫程序並設法使之運行,輕視需求分析和軟件維護。也就是說是和軟件開發和維護有關的許多錯誤認識和作法的形成,可以歸因於在計算機系統發展的早期階段軟件開發的個體化特點。

  • 缺乏正確的理論指導。缺乏有力的方法學和工具方面的支持。由於軟件開發不同於大多數其他工業產品,其開發過程是復雜的邏輯思維過程,其產品極大程度地依賴於開發人員高度的智力投入。由於過分地依靠程序設計人員在軟件開發過程中的技巧和創造性,加劇軟件開發產品的個性化,也是發生軟件開發危機的一個重要原因。

COCOMO:構造性成本模型(COCOMO,英文全稱為Constructive Cost Model)是由巴裏·勃姆(Barry Boehm)提出的一種軟件成本估算方法。這種模型使用一種基本的回歸分析公式,使用從項目歷史和現狀中的某些特征作為參數來進行計算。

構造性成本模型由三個不斷深入和詳細的層次組成。第一層,“基本COCOMO”,適用對軟件開發進行快速、早期地對重要的方面進行粗略的成本估計,但因其缺少不同的項目屬性(“成本驅動者”)的因素,所以準確性有一定的局限性。“中級COCOMO”中考慮進了這些成本驅動者。“詳細COCOMO”加入了對不同軟件開發階段影響的考量。

軟件生命周期

軟件生命周期是指軟件的產生直到成熟的全部過程。軟件生命周期模型是指人們為開發更好的軟件而歸納總結的軟件生命周期的典型實踐參考。

生命周期的每一個周期都有確定的任務,並產生一定規格的文檔(資料),提交給下一個周期作為繼續工作的依據。按照軟件的生命周期,軟件的開發不再只單單強調“編碼”,而是概括了軟件開發的全過程。軟件工程要求每一周期工作的開始只能必須是建立在前一個周期結果“正確”前提上的延續;因此,每一周期都是按“活動 ── 結果 ── 審核 ── 再活動 ── 直至結果正確”循環往復進展的。

典型劃分GB8567(4個時期7個階段):

  1. 軟件分析時期:問題定義、可行性研究、需求分析
  2. 軟件設計時期:總體設計、詳細設計
  3. 編碼與測試時期:編碼、測試
  4. 運行與維護時期

按照 SWEBok 的 KA 劃分,本課程關註哪些 KA 或 知識領域?

ACM與IEEE Computer Society聯合修定的SWEBOK(Software Engineering Body of Knowledge)提到,軟件工程領域中的核心知識包括:

  • 軟件需求(Software requirements)
  • 軟件設計(Software design)
  • 軟件建構(Software construction)
  • 軟件測試(Software test)
  • 軟件維護與更新(Software maintenance)
  • 軟件構型管理(Software Configuration Management, SCM)
  • 軟件工程管理(Software Engineering Management)
  • 軟件開發過程(Software Development Process)
  • 軟件工程工具與方法(Software Engineering Tools and methods)
  • 軟件質量(Software Quality)

本課程關註軟件設計、軟件測試、軟件構型管理、軟件工程管理、軟件開發過程、軟件質量等核心知識。

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

1.初始級:軟件過程是無序的,有時甚至是混亂的,對過程幾乎沒有定義,成功取決於個人努力。管理是反應式的。

2.可管理級:建立了基本的項目管理過程來跟蹤費用、進度和功能特性。制定了必要的過程紀律,能重復早先類似應用項目取得的成功經驗。

3. 已定義級:已將軟件管理和工程兩方面的過程文檔化、標準化,並綜合成該組織的標準軟件過程。所有項目均使用經批準、剪裁的標準軟件過程來開發和維護軟件,軟件產品的生產在整個軟件過程是可見的。

4. 量化管理級:分析對軟件過程和產品質量的詳細度量數據,對軟件過程和產品都有定量的理解與控制。管理有一個作出結論的客觀依據,管理能夠在定量的範圍內預測性能。

5. 優化管理級:過程的量化反饋和先進的新思想、新技術促使過程持續不斷改進。

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

2、解釋 PSP 各項指標及技能要求:

閱讀《現代軟件工程》的 PSP: Personal Software Process 章節。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
按表格 PSP 2.1, 了解一個軟件工程師在接到一個任務之後要做什麽,需要哪些技能,解釋你打算如何統計每項數據? (期末考核,每人按開發階段提交這個表)

計劃

  • 估計這個任務需要多少時間

開發

  • 分析需求
  • 生成設計文檔
  • 設計復審 (和同事審核設計文檔)
  • 代碼規範 (為目前的開發制定合適的規範)
  • 具體設計
  • 具體編碼
  • 代碼復審
  • 測試(包括自我測試,修改代碼,提交修改)

記錄時間花費

測試報告

計算工作量

事後總結

提出過程改進計劃

需要的技能: 編寫代碼、單元測試、效能分析

系統分析與設計HW1