系統設計與分析第一次作業
1、簡單題
軟件工程的定義
(1)將系統化、規範化、可度量的方法應用與軟件的開發、運行和維護的過程,即將工程化應用於軟件中。(2)對(1)中所述方法
的研究。——IEEE[IEE93]
軟件工程是指導計算機軟件開發和維護的工程學科。采用工程的概念、原理、技術和方法來開發與維護軟件,把經過實踐考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,這就是軟件工程。
閱讀經典名著“人月神話”等資料,解釋 software crisis、COCOMO 模型。
軟件危機是指落後的軟件生產方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發與維護過程中出現一系列嚴重問題的現象。
主要表現為軟件開發進度難以預測、軟件開發成本難以控制、用戶對產品功能難以滿足、軟件產品質量無法保證、系統中的錯誤難以消除、軟件產品難以維護、軟件缺少適當的文檔資料。
六十年代以來,隨著計算機應用需求的驅動,系統軟件和應用軟件有很大的發展,如操作系統,編譯系統和大型應用軟件等。由於軟件生產的復雜性和高成本,使大型軟件的生產出現了很大的困難,即出現軟件危機。
COCOMO,英文全稱為constructive cost model,中文為構造性成本模型。它是一種精確、易於使用的,基於模型的成本估算方法,最早由勃姆 (Boehm) 於 1981 年提出。從本質上說是一種參數化的項目估算方法,參數建模是把項目的某些特征作為參數,通過建立一個數字模型預測項目成本(類似於居住面積作為參數計算的整體的住房成本)。
在COCOMO模型中,工作量調整因子(Effort Adjustment Factor, EAF)代表多個參數的綜合效果,這些參數使得項目可以特征化和根據COCOMO數據庫中的項目規格化。每個參數可以定為很低,低,正常,高,很高。每個參數都作為乘數,其值通常在0.5到1.5之間,這些參數的乘積作為成本方程中的系數。
COCOMO用3個不同層次的模型來反映不同程度的復雜性,他們分別為:基本模型、中間模型、詳細模型。
同時根據不同應用軟件的不同應用領域,COCOMO模型劃分為如下3種軟件應用開發模式:組織模式、嵌入式應用開發模式、中間應用開發模式。
軟件生命周期。
典型劃分GB8567(4個時期7個階段):
1)軟件分析時期:問題定義、可行性研究、需求分析
2)軟件設計時期:總體設計、詳細設計
3)編碼與測試時期:編碼、測試
4)運行與維護時期
從時間角度,把整個周期劃分為若幹個階段
劃分的原則:各階段的任務彼此間盡可能相對獨立,同一個階段各項任務的性質盡可能相同,從而降低每個階段任務的復雜性,簡化不同階段之間的聯系,有利於軟件開發過程的組織管理。受軟件規模、性質、種類、開發方法等因素的影響。
按照 SWEBok 的 KA 劃分,本課程關註哪些 KA 或 知識領域?
- 軟件需求(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:無序,自發生產模式。
Level 1 - Initial :軟件過程是無序的,有時甚至是混亂的,對過程幾乎沒有定義,成功取決於個人努力。管理是反應式的。
Level 2 - Repeatable:建立了基本的項目管理過程來跟蹤費用、進度和功能特性。制定了必要的過程紀律,能重復早先類似應用項目取得的成功經驗。
Level 3 - Defined:已將軟件管理和工程兩方面的過程文檔化、標準化,並綜合成該組織的標準軟件過程。所有項目均使用經批準、剪裁的標準軟件過程來開發和維護軟件,軟件產品的生產在整個軟件過程是可見的。
Level 4 - Managed:分析對軟件過程和產品質量的詳細度量數據,對軟件過程和產品都有定量的理解與控制。管理有一個作出結論的客觀依據,管理能夠在定量的範圍內預測性能。
Level 5 - Optimizing:過程的量化反饋和先進的新思想、新技術促使過程持續不斷改進。
用自己語言簡述 SWEBok 或 CMMI (約200字)
CMMI,軟件能力成熟度集成模型是為了幫助軟件企業對開發軟件的過程進行管理和改進,同時增強自身的開發和改進能力,從而能準時有效高質量地開發出軟件而出現的評判模型。它主要依據的是:如果集中精力、持續努力地去建立有效的軟件工程過程的基礎結構,不斷進行管理的實踐和過程的改進,就可以克服軟件開發中的困難。它提供了一個單一的集成化框架,從而消除了各個模型的不一致性,減少了模型間的重復,增加透明度和理解。主要關註點為成本效益、明確重點、過程集中和靈活性。
2、解釋 PSP 各項指標及技能要求:
閱讀《現代軟件工程》的 PSP: Personal Software Process 章節。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
按表格 PSP 2.1, 了解一個軟件工程師在接到一個任務之後要做什麽,需要哪些技能,解釋你打算如何統計每項數據? (期末考核,每人按開發階段提交這個表)
接到一個任務後:
計劃
- 估計這個任務需要多少時間
開發
- 分析需求
- 生成設計文檔
- 設計復審 (和同事審核設計文檔)
- 代碼規範 (為目前的開發制定合適的規範)
- 具體設計
- 具體編碼
- 代碼復審
- 測試(包括自我測試,修改代碼,提交修改)
記錄時間花費
測試報告
計算工作量
事後總結
提出過程改進計劃
需要哪些技能:
- 知識: 對具體技術的掌握, 動手能力
例如: 對Java, C/C++/C#, 診斷/提高效能的技術, 對device driver, kernel debugger 的掌握;對於某一開發平臺的掌握。
- 經驗: 對問題領域的知識和經驗的積累 (例如: 對於醫療行業的了解, 對於金融行業的了解)。
- 通用的軟件設計思想, 軟件工程思想的提高
- 職業技能 (區別於技術技能)
職業技能包括: 自我管理的能力; 表達和交流的能力; 與人合作的能力; 把任務按質按量完成的執行力; 這些能力在IT 行業和其它行業都很重要。
如何統計每項數據:
首先建立表格,然後對於每一次任務,記錄並錄入每一個階段花費的時間並發布在博客中避免丟失。
系統設計與分析第一次作業