1、簡答題
(1)軟件工程的定義
軟件工程是:
(1)將系統化的、規範的、可度量的方法應用於軟件的開發、運行和維護,即將工程化方法應用於軟件;
(2)在(1)中所述方法的研究
(2)閱讀經典名著“人月神話”等資料,解釋 software crisis、COCOMO 模型。
software crisis即軟件危機,這是早期計算機科學的一個術語。六十年代以來,隨着計算機應用需求的驅動,系統軟件和應用軟件有很大的發展,如操作系統,編譯系統和大型應用軟件等。由於軟件生產的複雜性和高成本,使大型軟件的生產出現了很大的困難,即出現軟件危機。軟件危機的本源是複雜、期望和改變。這個術語用來描述正急遽增加之電腦的力量帶來的衝擊和可能要處理的問題的複雜性。從本質上來說,它談到了寫出正確、可理解、可驗證的計算機程序的困難。
COCOMO即構造性成本模型,是由巴里·勃姆(Barry Boehm)提出的一種軟件成本估算方法。這種模型使用一種基本的迴歸分析公式,使用從項目歷史和現狀中的某些特徵作爲參數來進行計算。COCOMO由三個不斷深入和詳細的層次組成。第一層,“基本COCOMO”,適用對軟件開發進行快速、早期地對重要的方面進行粗略的成本估計,但因其缺少不同的項目屬性(“成本驅動者”)的因素,所以準確性有一定的侷限性。“中級COCOMO”中考慮進了這些成本驅動者。“詳細COCOMO”加入了對不同軟件開發階段影響的考量。
(3)軟件生命週期。
軟件生命週期(Software Life Cycle,SLC)是軟件的產生直到報廢或停止使用的生命週期,把整個軟件生存週期劃分爲若干階段,使得每個階段有明確的任務,使規模大,結構複雜和管理複雜的軟件開發變的容易控制和管理。
典型劃分GB8567(4個時期7個階段):
1. 軟件分析時期:問題定義、可行性研究、需求分析
2. 軟件設計時期:總體設計、詳細設計
3. 編碼與測試時期:編碼、測試
4. 運行與維護時期
(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)
(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的誕生做到了,這是所有學科的關鍵里程碑。
1993年,IEEE-CS和ACM爲把軟件工程建設成爲一個專業,建立了IEEE-CS/ACM聯合指導委員會。隨後,該指導委員會被軟件工程協調委員會(SWECC)替代。SWECC給出了“軟件工程職業道德規範”、“本科軟件工程教育計劃評價標準”和“軟件工程知識體”(SWEBOK)。
SWEBOK全面描述了軟件工程實踐所需的知識,爲開發本科軟件工程教育計劃打下了基礎。
2、解釋 PSP 各項指標及技能要求:
閱讀《現代軟件工程》的 PSP: Personal Software Process 章節,按表格 PSP 2.1, 瞭解一個軟件工程師在接到一個任務之後要做什麼,需要哪些技能,解釋你打算如何統計每項數據?
表格PSP2.1告訴我們一個軟件工程師在接到一個任務後要做:
1.計劃:
- 估計這個任務需要多少時間
2.開發:
- 分析需求
- 生成設計文檔
- 設計複審 (和同事審覈設計文檔)
- 代碼規範 (爲目前的開發制定合適的規範)
- 具體設計
- 具體編碼
- 代碼複審
- 測試(包括自我測試,修改代碼,提交修改)
3.記錄時間花費
4.測試報告
5.計算工作量
6.事後總結
7.提出過程改進計劃
8.如何統計每項數據
9.紀錄時間
而做到這些需要的技能有:
1.眼光,有放眼整個任務流程的眼光,不侷限於當前
2.知識,沒有足夠的理論沒辦法進行任何開發
3.動手能力,空有知識不動手也只是紙上談兵
4.耐心律己的心態,記錄時間花費,工作量等
每項數據的統計方式:
利用一些可編寫在線文檔平臺(代碼管理平臺:Github;數據管理平臺:博客、石墨文檔等),每一項數據在開始和結束的時候都會自動記錄,這樣既可以上傳進度,又可以供他人監督。