PSP
PSP
- 基本概念
- PSP---Personal Software Process,個(gè)體軟件過程。是一種個(gè)體級用于管理和改進(jìn)軟件工程師個(gè)人工作方式的持續(xù)改進(jìn)過程
- PSP中的基本度量項(xiàng)
- 時(shí)間
- 采用時(shí)間日志的方式
- 番茄工作法(Pomodoro Technique)
確定你想要干什么
設(shè)定一個(gè)25分鐘的定時(shí)器
工作,直到定時(shí)器時(shí)間到:這就是一個(gè)"番茄鐘"
休息5分鐘,繼續(xù)下一個(gè)番茄鐘
每4個(gè)番茄鐘做一次長時(shí)間的休息
- 缺陷
- 任何會(huì)引起交付產(chǎn)物所必要的修改。包括文檔描述錯(cuò)誤,拼寫錯(cuò)誤,語法錯(cuò)誤,邏輯錯(cuò)誤等
- 缺陷類型標(biāo)準(zhǔn),10個(gè)典型的缺陷類型
Documentation
- 注釋、提示信息等
Syntax
- 拼寫錯(cuò)誤,指令格式錯(cuò)誤等
Build Package
- 組件版本,調(diào)用庫方面的錯(cuò)誤
Assignment
- 申明、變量影響范圍等方面的錯(cuò)誤
Interface
- 調(diào)用接口錯(cuò)誤
Checking
- 出錯(cuò)信息,未充分檢驗(yàn)等錯(cuò)誤
Data
- 數(shù)據(jù)結(jié)構(gòu),內(nèi)容錯(cuò)誤
Function
- 邏輯錯(cuò)誤,指針,循環(huán),計(jì)算,遞歸等方面的錯(cuò)誤
System
- 配置,計(jì)時(shí),內(nèi)存方面的錯(cuò)誤
Environment
- 設(shè)計(jì),編譯,測試或其他支持系統(tǒng)的錯(cuò)誤
- 缺陷日志記錄
方便地統(tǒng)計(jì)出缺陷在整個(gè)開發(fā)階段引入和消除的狀況
為提升過程質(zhì)量,更加有效地消除缺陷提供參考
PSP中有專門的度量指標(biāo)用于幫助軟件工程師了解缺陷注入和消除狀況
- 規(guī)模
- 規(guī)模度量方式的選擇參考標(biāo)準(zhǔn)
選擇的規(guī)模度量方式必須反應(yīng)開發(fā)成本
選擇的度量方式必須精確定義
選擇的度量方式必須能用自動(dòng)化方法來統(tǒng)計(jì)
選擇的度量方式必須有助于早期規(guī)劃
- 常用的規(guī)模度量方式
代碼行(LOC)
- 可以精確地度量軟件產(chǎn)品的規(guī)模,也方便開發(fā)相應(yīng)的規(guī)模統(tǒng)計(jì)工具,但是在項(xiàng)目初始階段,很難直接估算出程序的代碼行
功能點(diǎn)(FP)
- 在項(xiàng)目早期容易識(shí)別,但是功能點(diǎn)的度量也比較粗略且對于功能點(diǎn)的粒度缺乏一致的理解,不存在可以對功能點(diǎn)進(jìn)行自動(dòng)化統(tǒng)計(jì)的方法
PROBE:PROxy Based Estimation,基于代理的估算
- 尋找一種便于早期規(guī)劃的規(guī)模度量的代理,建立這種代理與精確度量之間的關(guān)聯(lián)關(guān)系
- 時(shí)間
- PROBE估算的流程
- PROBE估算方法主要用來估算待開發(fā)過程程序的規(guī)模和所需資源
- 一個(gè)典型的PROBE流程
- 概要設(shè)計(jì)
- 代理識(shí)別
類
方法/函數(shù)
過程
數(shù)據(jù)庫表格
- 估算并調(diào)整程序規(guī)模
代理規(guī)模和程序規(guī)模的區(qū)別
由于估算本質(zhì)上是一種主觀判斷,因此難免出現(xiàn)偏差,這種偏差不能簡單地根據(jù)上一次的偏差進(jìn)行補(bǔ)償修正
PSP:通常采用線性回歸方法對估算結(jié)果進(jìn)行調(diào)整,使得估算結(jié)果盡可能準(zhǔn)確
使用線性回歸調(diào)整規(guī)模估算
使用線性回歸調(diào)整時(shí)間估算
- 計(jì)算預(yù)測區(qū)間
- 顯著性
- 描述的是上述兩組數(shù)據(jù)的相關(guān)關(guān)系出現(xiàn)的偶然性。如果顯著性接近1,說明出現(xiàn)這樣的相關(guān)性是非常偶然的
- 相關(guān)性
- 相關(guān)性描述的是兩組變化的數(shù)據(jù)之間相互關(guān)聯(lián)的程度,通過用字母r來表示。相關(guān)性越大越好
- 使用線性回歸方法估算程序規(guī)模和資源
- 線性回歸調(diào)整規(guī)模估算
- 線性回歸調(diào)整時(shí)間估算
- 相對大小矩陣
- 簡單方法
- 特點(diǎn):計(jì)算簡單,但不穩(wěn)定,隨著新數(shù)據(jù)的加入會(huì)造成相對大小矩陣數(shù)據(jù)的大幅度調(diào)整
- 方法
將每個(gè)方法的代碼行數(shù)進(jìn)行排序
選擇最小值作為VS
選擇最大值作為VL
選擇中值作為M
選擇VS與M的均值作為S
選擇VL與M的均值作為L
- 正態(tài)分布
- 相對穩(wěn)定,在歷史數(shù)據(jù)基本符合正態(tài)分布的情況下,可以給出非常好的相對大小矩陣,但實(shí)際上程序規(guī)模的分布并不是正態(tài)分布的
- 對數(shù)正態(tài)分布
- 更加符合人們對于程序規(guī)模的直觀感覺,PSP中大部分情況下使用對數(shù)正態(tài)分布法來對歷史數(shù)據(jù)進(jìn)行整理,進(jìn)而獲得相對大小矩陣;需要經(jīng)常維護(hù)和更新相對大小矩陣
- 簡單方法
- 常用的PSP過程質(zhì)量的度量指標(biāo)
- Yield
- Yield指標(biāo)用以度量每個(gè)階段在消除缺陷方面的效率
- Phase Yield=100*(某階段發(fā)現(xiàn)的缺陷個(gè)數(shù))/(某階段注入的缺陷個(gè)數(shù)+進(jìn)入該階段前遺留的缺陷個(gè)數(shù))
- Process Yield=100*(第一次編譯前發(fā)現(xiàn)的缺陷個(gè)數(shù))/(第一次編譯前注入的缺陷個(gè)數(shù))
- 典型的缺陷注入階段
設(shè)計(jì)階段
編碼階段
- 典型的缺陷消除階段
設(shè)計(jì)評審
代碼評審
編譯
單元測試(修改缺陷的過程中有可能引入新的缺陷)
- Yield是一種事后質(zhì)量控制手段
- Yield可以直接通過缺陷日志統(tǒng)計(jì)得到,可以清楚地了解缺陷在整個(gè)開發(fā)過程中被注入和消除的狀況,Yield指標(biāo)越高越好,整個(gè)過程的Process Yield,期望值在80以上。
- Yield估算
缺陷總數(shù)不可知
指導(dǎo)質(zhì)量管理
如果有歷史數(shù)據(jù),應(yīng)當(dāng)充分使用歷史數(shù)據(jù)
無歷史數(shù)據(jù)估算
- 將單元測試階段的Phase Yield設(shè)定為50
- 在測試中每發(fā)現(xiàn)一個(gè)缺陷,往往意味著還有一個(gè)缺陷沒有被發(fā)現(xiàn)
- A/FR(Appraisal to Failure Ratio)質(zhì)檢失效比
- A/FR=PSP質(zhì)檢成本/PSP失效成本
PSP中定義的失效成本為編譯時(shí)間和單元測試時(shí)間之和
PSP中定義的質(zhì)檢成本為設(shè)計(jì)評審時(shí)間與代碼評審時(shí)間之和
- 理論上,A/FR的值越大,往往意味著越高的質(zhì)量,過高的A/FR往往意味著做了過多的評審,反而會(huì)導(dǎo)致開發(fā)效率的下降。作為指南,在PSP中A/FR的期望值為2.0.為了確保較高的質(zhì)量水平,軟件工程師應(yīng)當(dāng)花費(fèi)兩倍于編譯加測試的時(shí)間進(jìn)行評審工作,評審的對象為設(shè)計(jì)和代碼
- COQ(Cost Of Quality)質(zhì)量成本
- 用來量化質(zhì)量問題所帶來的成本消耗
- 由三個(gè)主要的組成部分
失效成本
- 失效分析現(xiàn)象,查找原因,做必要的修改所消耗的成本
質(zhì)檢成本
- 評價(jià)軟件鏟平,確定其質(zhì)量狀況所消耗的成本
預(yù)防成本
- 識(shí)別缺陷根本原因,采取措施預(yù)防其再次發(fā)送所消耗的成本
- PQI(Process Quality Index)過程質(zhì)量指標(biāo)
- 用以度量PSP過程的整體質(zhì)量
- PQI用來全面刻畫軟件過程質(zhì)量
- 它是五個(gè)過程質(zhì)量指標(biāo)的乘積
設(shè)計(jì)質(zhì)量
- 設(shè)計(jì)時(shí)間應(yīng)該大于編碼的時(shí)間
設(shè)計(jì)評審質(zhì)量
- 設(shè)計(jì)評審時(shí)間應(yīng)該大于設(shè)計(jì)時(shí)間的50%
代碼質(zhì)量
- 代碼評審時(shí)間應(yīng)該1大于編碼時(shí)間的50%
代碼評審質(zhì)量
- 代碼的編譯缺陷密度應(yīng)當(dāng)小于10個(gè)/千行
程序質(zhì)量
- 代碼的單元測試缺陷密度應(yīng)當(dāng)小于5個(gè)/千行
- PQI超過0.4,組件質(zhì)量往往比較高
- (Review Rate)評審速度
- 評審速度是一個(gè)用以指導(dǎo)軟件工程師開展有效評審的指標(biāo)
- 高質(zhì)量的評審需要軟件工程師投入足夠的時(shí)間進(jìn)行評審
- 大量統(tǒng)計(jì)數(shù)據(jù)表明,代碼評審速度小于200LOC/小時(shí),文檔評審速度小于4Page/小時(shí)
- DRL缺陷消除效率比(Defect-Removal Leverage)
- 度量的是不同缺陷消除手段消除缺陷的效率
- 其計(jì)算方式是以某個(gè)測試階段(一般為單元測試)每小時(shí)發(fā)現(xiàn)的缺席數(shù)為基礎(chǔ),其他階段每小時(shí)發(fā)現(xiàn)的缺陷書與該測試階段每小時(shí)發(fā)現(xiàn)的缺陷的比值就是DRL
- Yield
- PSP四大設(shè)計(jì)模式
- 操作規(guī)格模板(Operational Specification Template簡稱OST)
- 描述系統(tǒng)與外界的交互情形。具體而言,是描述"用戶"與特定設(shè)計(jì)系統(tǒng)的正常情況下的交互。OST可以用來定義測試場景和測試用例,也可以作為和系統(tǒng)用戶討論需求的基礎(chǔ),特別是操作相關(guān)的需求描述
- UML
用例圖
順序圖
- 功能規(guī)格模板(Functional Specification Template簡稱FST)
- 描述了系統(tǒng)對外的靜態(tài)接口。軟件設(shè)計(jì)人員可以通過FST來定義軟件產(chǎn)品的功能
- UML
類圖
- 狀態(tài)規(guī)格模板(State Specification Template簡稱SST)
- 描述系統(tǒng)的狀態(tài)信息。SST可以精確定義程序的所有狀態(tài),狀態(tài)之間的轉(zhuǎn)換以及伴隨著每次狀態(tài)轉(zhuǎn)換的動(dòng)作
- UML
狀態(tài)機(jī)圖
- 邏輯規(guī)格模板(Logical Specification Template簡稱LST)
- 描述了系統(tǒng)的靜態(tài)邏輯。
- 操作規(guī)格模板(Operational Specification Template簡稱OST)
- UML與PSP設(shè)計(jì)模板的關(guān)系
- UML的用例圖和順序圖提供了與PSP與OST同樣的信息
- UML中的順序圖和類圖所描述的類之間的關(guān)系以及對象之間的交互信息在PSP4個(gè)設(shè)計(jì)模板中沒有對應(yīng)的內(nèi)容
- UML類圖中記錄了方法的型構(gòu),然而方法的行為沒有描述,這一點(diǎn)在PSP的FST中有相應(yīng)的內(nèi)容
- PSP中的LST用以描述程序的靜態(tài)邏輯,這在UML沒有對應(yīng)的圖示方法
- UML中的狀態(tài)機(jī)圖與SST描述的狀態(tài)圖類型,但是SST中描述的關(guān)于狀態(tài)、狀態(tài)轉(zhuǎn)換條件以及狀態(tài)轉(zhuǎn)換中的動(dòng)作沒有對應(yīng)的UML圖示方法
總結(jié)
- 上一篇: 存储墙
- 下一篇: 《算法导论》第四版 电子版 全网第一时间