軟體工程的定義
軟體工程是(1)將系統化的、規範的、可度 量的方法應用於軟體的開發、執行和維護,即將工程 化方法應用於軟體;(2)在(1)中所述方法的研究 。
閱讀經典名著「人月神話」等資料,解釋 software crisis、cocomo 模型
software crisis: 軟體危機泛指在計算機軟體的開發和維護過程中所遇到的一系列嚴重問題。
cocomo模型:英文全稱為constructive cost model,中文為構造性成本模型。它是一種精確、易於使用的,基於模型的成本估算方法,最早由勃姆 (boehm) 於 1981 年提出。從本質上說是一種引數化的專案估算方法,引數建模是把專案的某些特徵作為引數,通過建立乙個數字模型**專案成本(類似於居住面積作為引數計算的整體的住房成本)。
cocomo用3個不同層次的模型來反映不同程度的複雜性,他們分別為:
● 基本模型 (basic model)。 是乙個靜態單變數模型,它用乙個以已估算出來的源**行數 (loc) 為自變數的函式來計算軟體開發工作量。
● 中間模型 (intermediate model)。 則在用 loc 為自變數的函式計算軟體開發工作量的基礎上,再用涉及產品、硬體、人員、專案等方面屬性的影響因素來調整工作量的估算。
● 詳細模型 (detailed model) 包括中間 cocomo 模型的所有特性,但用上述各種影響因素調整工作量估算時,還要考慮對軟體工程過程中分析、設計等各步驟的影響。
同時根據不同應用軟體的不同應用領域,cocomo模型劃分為如下3種軟體應用開發模式:
● 組織模式(organic mode)。這種應用開發模式的主要特點是在乙個熟悉穩定的環境種進行專案開發,該專案與最近開發的其他專案有很多相似點,專案相對較小,而且並不需要許多創新。
● 嵌入式應用開發模式 (embedded mode)。在這種應用開發模式種,專案受到介面要求的限制。介面對整個應用的開發要求非常高,而且要求專案有很大的創新,例如開發一種全新的遊戲。
● 中間應用開發模式 (semidetached mode)。這時介於組織模式和嵌入式應用開發模式之間的型別。[1]
軟體生命週期
軟體生命週期(software life cycle,slc)是軟體的產生直到報廢或停止使用的生命週期。
典型劃分gb8567(4個時期7個階段):
1)軟體分析時期:問題定義、可行性研究、需求分析 2)軟體設計時期:總體設計、詳細設計 3)編碼與測試時期:編碼、測試 4)執行與維護時期
按照 swebok 的 ka 劃分,本課程關注哪些 ka 或 知識領域?
software requirements
software design
software construction
software testing
software maintenance
software configuration management
software engineering management
software engineering process
software engineering models and methods
software quality
解釋 cmmi 的五個級別。例如:level 1 - initial:無序,自發生產模式。
a. 初始級
軟體過程是無序的,有時甚至是混亂的,對過程幾乎沒有定義,成功取決於個人努力。管理是反應式的。
b.可管理級
建立了基本的專案管理過程來跟蹤費用、進度和功能特性。制定了必要的過程紀律,能重複早先類似應用專案取得的成功經驗。
c. 已定義級
已將軟體管理和工程兩方面的過程文件化、標準化,並綜合成該組織的標準軟體過程。所有專案均使用經批准、剪裁的標準軟體過程來開發和維護軟體,軟體產品的生產在整個軟體過程是可見的。
d. 量化管理級
分析對軟體過程和產品質量的詳細度量資料,對軟體過程和產品都有定量的理解與控制。管理有乙個作出結論的客觀依據,管理能夠在定量的範圍內**效能。
e. 優化管理級
過程的量化反饋和先進的新思想、新技術促使過程持續不斷改進。
用自己語言簡述 swebok 或 cmmi (約200字)
cmmi全稱是capability maturity model integration,即能力成熟度模型整合(也有稱為:軟體能力成熟度整合模型 ),其目的是幫助軟體企業對軟體工程過程進行管理和改進,增強開發與改進能力,從而能按時地、不超預算地開發出高質量的軟體。cmmi為改進乙個組織的各種過程提供了乙個單一的整合化框架,因而能夠從總體上改進組織的質量和效率。cmmi主要關注點就是成本效益、明確重點、過程集中和靈活性四個方面。cmmi主要分為初始級,可管理級,已定義級,量化管理級,優化管理級五個等級。
按** psp 2.1, 了解乙個軟體工程師在接到乙個任務之後要做什麼,需要哪些技能,解釋你打算如何統計每項資料? 任務
所需技能
計畫對問題領域的知識和經驗的積累,對於軟體完成的把握能力和預估能力
估計這個任務需要多少時間
開發
分析需求
分析能力,能夠明確需求
生成設計文件
設計編寫能力
設計複審 (和同事審核設計文件)
團隊合作,溝通能力
**規範 (為目前的開發制定合適的規範)
**編寫能力
具體設計
設計能力
具體編碼
編碼能力
**複審
編碼能力,dubug能力
測試(包括自我測試,修改**,提交修改)
測試,debug能力
記錄時間花費編寫報告能力
測試報告測試,表達能力
計算工作量計算,表達能力
事後總結總結,編寫能力
提出過程改進計畫總結,反思能力
每項資料統計方法
a) 專案/任務有多大?
說明專案的大小, 乙個重要的指標是: 你在實際產品中寫了多少**.
b) 花了多少時間?
可以用小時, 天,月,年來表示。一組人所花費的時間可以用 (人數*時間) 來表示。
c) 質量如何?交付的**中有多少缺陷?
交付有兩個定義,
· 在 code complete 「**完成」 的時候, 交付給測試人員
· 交付到顧客那裡去 (在軟體交付的時候)。
可以用缺陷的數量來除以專案的大小。
d) 是否按時交付?
衡量乙個程式設計師在一段時間內的交付情況時, 統計每個階段的完成程度。
系統分析與設計HW1
簡單題 1.軟體工程的定義 軟體工程是指導計算機軟體開發和維護的 工程學科。採用工程的概念 原理 技術和方法來開發與維護軟體,把經過實踐考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,這就是軟體工程。ieee的定義 1 將系統化的 規範的 可度量的方法應用於軟體的開發 執行和維護,即...
系統分析與設計 HW1
軟體工程是研究和應用如何以系統性的 規範化的 可定量的過程化方法去開發和維護軟體,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科,也是指將系統化 規範化 可度量的方法應用於軟體的開發 執行和維護中,即,將工程化的方法應用於軟體。軟體危機 software cr...
系統設計與分析 HW1
1 軟體工程的定義 軟體工程一直以來都缺乏乙個統一的定義,很多學者 組織機構都分別給出了自己認可的定義 ieee的定義 軟體工程是 1.將系統化的 嚴格約束的 可量化的方法應用於軟體的開發 執行和維護,即將工程化應用於軟體。2.在1中所述方法的研究。計算機科學技術百科全書 軟體工程是應用電腦科學 數...