系統分析與設計lesson1
1、簡單題
- 軟件工程的定義
(1)將系統化、規範化、可度量的方法應用與軟件的開發、運行和維護的過程,即將工程化應用於軟件中。
(2)對(1)中所述方法的研究。——IEEE[IEE93] - 閱讀經典名著“人月神話”等資料,解釋 software crisis、COCOMO 模型。
software crisis:軟件危機。由於計算機技術和應用發展迅速,整個社會對計算機應用的需求越來越大,知識更新週期加快,軟件開發人員經常處在變化之中,不僅需要適應硬件更新的變化,而且還要涉及日益擴大的應用領域問題研究;但軟件的生成卻還沿用“手工作坊”的生產方式,人工編程生產,生產效率不夠高,生產能力極其低下,從而在計算機軟件的開發和維護過程中會遇到一系列嚴重問題,這些問題統稱軟件危機。
COCOMO模型:結構性成本模型。模型按其詳細程度可以分爲三級:基本COCOMO模型,中間COCOMO模型,詳細COCOMO模型。其中基本COCOMO模型是是一個靜態單變量模型,它用一個以已估算出來的原代碼行數(LOC)爲自變量的經驗函數計算軟件開發工作量。中級COCOMO模型在基本COCOMO模型的基礎上,再用涉及產品、硬件、人員、項目等方面的影響因素調整工作量的估算。詳細COCOMO模型包括中間COCOMO模型的所有特性,但更進一步考慮了軟件工程中每一步驟(如分析、設計)的影響。軟件工程的定義其實核心就是要規範化軟件開發過程中的每一個環節,COCOMO也是重要的一種方法來衡量軟件開發的成本,它們的存在是爲了應對軟件危機的出現,也是歷史發展的必然性。 - 軟件生命週期。
Systems Development Life Cycle,SDLC) 又稱爲軟件生存週期或系統開發生命週期,是軟件的產生直到報廢的生命週期。週期內有問題定義、可行性分析、總體描述、系統設計、編碼、調試和測試、驗收與運行、維護升級到廢棄等階段,這種按時間分程的思想方法是軟件工程中的一種思想原則,即按部就班、逐步推進,每個階段都要有定義、工作、審查、形成文檔以供交流或備查,以提高軟件的質量。 - 按照 SWEBOK 的 KA 劃分,本課程關注哪些 KA 或 知識領域?
SWEBOK的Version 3將KA劃分爲:軟件需求、軟件設計、軟件構建、軟件測試、軟件維護、軟件配置管理、軟件工程管理、軟件工程過程、軟件工程模型和方法、軟件質量、軟件工程專業實踐、軟件工程經濟學、計算基礎、數學基礎、工程基金會。
本課程關注:軟件工程管理、軟件工程過程、軟件工程模型和方法、軟件質量。 - 解釋 CMMI 的五個級別。例如:Level 1 - Initial:無序,自發生產模式。
Level 1 – Initial 過程不可測,極少的控制和反饋
Level 2 – Managed 過程定格,能反饋
Level 3 – Defined 過程標準化,積極主動的
Level 4 – Quantitatively Managed 過程可度量且可控
Level 5 – Optimizing 過程不斷改進優化 - 用自己語言簡述 SWEBok 或 CMMI (約200字)
CMMI-Capability Maturity Model Integration,能力成熟度模型集成。
CMMI是美國產業界、政府和卡內基梅隆大學軟件工程研究所(CMU/SEI)於2002年1月推出的集成了軟件工程(SW)、系統工程(SE)、集成化產品和過程開發(IPPD)等學科的綜合成熟度模型;
CMMI的表現形式有2種
階段式 ,成熟度級別:應用於跨多個過程域的組織過程改進的成果。五個成熟度級別1-5。
連續式 ,能力級別:應用於單個過程域中的組織過程改進的成果。四個能力級別0-3。
CMMI的5個組織成熟等級爲(1)初始級、(2)已管理級、(3)已定義級、(4)量化管理級、(5)優化級
CMMI的過程域定義了每個成熟度等級應該達到的水平,沒達到定義水平,則不通過該級別。
CMMI可以保證軟件開發的質量與進度,有利於成本控制,有助於提高軟件開發者的職業素養,能夠就解決人員流動所帶來的問題,並且有利於提升公司和員工績效管理水平。
2、解釋PSP各項指標及技能要求
- 閱讀《現代軟件工程》的 PSP: Personal Software Process 章節。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html
各項指標:
- 項目大小,一般用代碼行數來表示,也可以用功能點;在實際產品中寫了多少代碼,不包括空行/註釋/單字符行 。
- 花費時間,可以用小時, 天,月,年來表示 ,一組人所花費的時間可以用 (人數*時間) 來表示,例如某項目花費了10個人·月。
- 質量如何,交付的代碼中缺陷的比例 。
- 是否按時交付,以標準方差來看,穩定的交付時間更爲重要 ,能保證團隊的協同性。
按表格PSP 2.1,瞭解一個軟件工程師在接到一個任務之後要做什麼,需要哪些技能,解釋你打算如何統計每項數據? (期末考覈,每人按開發階段提交這個表)
待做事項
- 計劃
· 估計這個任務需要多少時間 - 開發
· 分析需求
· 生成設計文檔
· 設計複審 (和同事審覈設計文檔)
· 代碼規範 (爲目前的開發制定合適的規範)
· 具體設計
· 具體編碼
· 代碼複審
· 測試(包括自我測試,修改代碼,提交修改) - 記錄時間花費
- 測試報告
- 計算工作量
- 事後總結
- 提出過程改進計劃
所需技能
- 規劃能力,對任務/項目進行統籌管理,合理安排過程時間;
- 理解能力,要能理解需求,分析需求;
- 書面表達能力,能撰寫各種各樣的文檔;
- 編碼測試能力,要對底層的數據結構算法等具有設計,具備編碼能力進行開發,能構思出高質量的輸入來進行測試。
- 總結能力,對時間花費、工作量進行計算,事後進行總結,反思並提出改進方案;
- 執行力,嚴格按照計劃來行事。
統計方式
- 將項目明確劃分階段,確定每個階段的工作任務和結束指標;
- 每次完成階段的工作任務後,對自己花費的時間計時記錄下來,利用代碼統計工具對完成的代碼進行統計;
- 項目完成後,統計之前的記錄的結果進行分析。
- 計劃