




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Introduction to the Personal Software Process ZengyiCollege of Computer Science and Engineering, ChongQing University, Chongqing 40044, China E-mail: Telo),138832027518. PSP的進度管理n如何制定和使用進度表n如何對照進度表使用檢查點來跟蹤作業的進展情況n要識別和描述用來跟蹤某個編程項目進展情況的幾個檢查點8. PSP的進度管理8.2進度管理的工具nProject 2000 nGantt圖nGant
2、t圖的跟蹤n任務分配狀況n日歷n網絡圖n資源工作表n資源使用狀況n資源圖表n其他圖表8. PSP的進度管理8.3制定項目進度表n在Gantt圖中列出每一項任務并說明開始和結束時間n確保每個人都知道要完成的任務n獲取每項任務承諾的完成時間n確定各任務之間的相互依賴關系n每個人開始處理工作之前他們必須得到什么樣的輸入n他們從誰那里得到這些輸入n把每個相互依賴的關系都文擋化n與所有涉及到人一起復查計劃的進度表和各任務之間的依賴關系,以確保沒有沖突、分歧和誤解n復查進度表,以確保它包含了完成整個作業所需要的全部任務8. PSP的進度管理8.4 檢查點n對任何項目進行計劃,都要把工作分成幾部分,分別估計
3、和規劃n每一部分都可作為一個計劃n每一部分完成后,就達到了一個定義的進展階段檢檢查點查點或稱里程碑里程碑n檢查點是一個項目中能夠客觀地標識的點,每個檢查點都標明了計劃完成的日期,那么就容易看出當前是達到了進度要求還是落后了n檢查點必須清晰明確、沒有歧義才是有用的,即必須是某一特別動作,要么它已經完成,要么還沒有完成8. PSP的進度管理 8.4 檢查點n一些明確的檢查點的事例n完成并提交了一份學術報告n制定了某個程序的計劃,并用標準格式寫成了文檔n與指導教師復查了開發計劃,并按照建議作出了修改n完成了某個程序設計,并用標準格式寫成了文檔n實現、編譯并修改了某個程序n過多的檢查點不利于跟蹤要緊的
4、事情8. PSP的進度管理8.5 跟蹤項目計劃n跟蹤項目計劃的目的n使你知道進度超前還是落后n檢查點和詳細的計劃可使你明確項目的那部分出了問題n在項目出現問題時及時采取行動8. PSP的進度管理8.5 跟蹤項目計劃n跟蹤項目計劃的幾點建議n確保所有檢查點的定義是明確的,并已寫下來n在制定一份全新的計劃之前,不要改動計劃n按照計劃公布項目進展狀態時,不要改動計劃n在給出新估計的項目完成日期時,保留原來估計的日期,然后用虛線注明新的日期n保存原始的進度表和所有更新的版本n如果改動了原始的計劃,就沒有了測量依據8. PSP的進度管理8.5 跟蹤積分n如何了解自己的進展情況nHumphrey建議的個人
5、使用表格n例1:開發計劃 對計劃用時和實際用時的比較 任務子任務計劃(min)計劃的積分計劃和完成周次實際積分單元累計計劃實際任務1任務1.1總計計劃做此項任務的時間計劃做此項任務的總時間計劃做此項任務的單元百分比累計值,應該為100。計劃做此項任務的時間占總計劃時間的百分比計劃做此項任務為止的單元時間的累計百分比值實際做此項任務的時間占總計劃時間的百分比8. PSP的進度管理8.5 跟蹤積分nHumphrey建議的個人使用表格n例2 計劃進度表預測進度周編號計劃積分實際積分預測積分12n100.00通過對前面各周實際積分的平均值計算,可以得到后面各周的預測值計算各周實際積分值計算各周計劃積分
6、值8. PSP的進度管理8.5 跟蹤積分nMS Project 2000中的進度跟蹤9. PSP的項目計劃9.1項目計劃的必要性n定義要完成的工作和如何完成這項工作n對所需要的時間和資源進行估計n為管理部門的評審和控制提供框架n當它寫成文檔時就是一個與實際性能比較的基準n這個基準可以使你看到估計中的錯誤n這個基準可以使你改善計劃的準確性9. PSP的項目計劃9.2項目計劃總結表在此表基礎上逐步添加更有用的表項在此表基礎上逐步添加更有用的表項n在項目開始之前填寫計劃部分,在項目開始之后填寫實際部分。示例1學生:曾笑寒學生:曾笑寒日期:日期:10/7/2002程序:程序:程序號程序號#:8教師:教
7、師:ZENGYI 程序設計語言:程序設計語言:PASCAL總結總結計劃計劃實際實際Mins/LOC7.827.21LOC/Hour7.678.32程序規模程序規模 LOC計劃計劃實際實際新開發與更改的2619最大值36最小值18開發時間開發時間 Min計劃計劃實際實際總計203137最大值282最小值141以前的歷史數據。如果沒有,則只能猜測。60/7.827.21*19203=7.82*26,此項值用于分析開發的生產率。任務完成之前,學生用以前的數據來估計程序規模估計程序規模,并填寫到計劃計劃欄。26即為最大和最小值之間最可能的值假如新開發20,并要從以前程序拷貝一個15行的程序但估計只修改
8、6行,因此20+6=26最大規模和最小規模有助于判斷最可能的估計值282=7.82*36,141=7.82*18,任務完成之后,實際值是根據時間記錄日志時間記錄日志中的數據填入9. PSP的項目計劃9.3估計的準確性n估計出來的規模和時間可能不是很準確的,這是正常的。n首要的目標是要學會做出無偏估計,即高估的次數要與低估的次數相同。例如,每進行10次估計,預計有5次高估和5次低估。n估計文檔化,有助于以后作出更好的估計,有助于判斷制訂不能滿足委托書的風險大小10. 軟件開發過程10.1為什么使用過程n在軟件企業改善其性能時,如何確定該組織的當前的軟件開發狀況收集數據n一個過程為完成某一作業而定
9、義的一系列步驟n一個作業的每個步驟或階段都有明確的入口準則,只有滿足這些條件,才可以開始進入這個階段n同樣,它們也有出口準則,只有滿足這些條件,才可以結束這個階段n過程的步驟定義了要完成的任務以及如何完成這些任務n過程質量決定了他們的工作質量和效率10. 軟件開發過程10.1為什么使用過程nPSP是一個用以幫助軟件工程師測量和改進工作方式的框架nPSP的兩個目標n幫助軟件工程師開發程序n告訴你如何用過程來改善工作方式10. 軟件開發過程10.2與過程相關的一些定義n一個產品是指為合作者、顧主或客戶所生產的產品n一個項目通常生產一種產品n一個任務是已定義的一部分工作n一個過程定義完成項目的方法n
10、過程有許多階段或步驟,如計劃、開發和測試n一個過程階段可以由許多任務或活動組成,如集成測試、系統測試、驗收測試等n一個過程可以包括一個或多個階段,一個階段可以包括一個或多個任務或活動n計劃描述一個特定的項目完成方式,包括如何做、何時做以及花費多少n一個作業是你為一個項目或任務所做的事情時間和缺陷數據實際數據10. PSP的軟件開發過程10.2與過程相關的一些定義n一個有完整描述的過程稱為已定義過程。n已定義過程的過程包括一些腳本腳本、表格表格、模板模板和標準標準等。nPSP的過程流程計劃設計編碼編譯測試后置處理過程腳本項目計劃總結表各種日志需求最終產品計劃的和實際的項目和過程的數據計劃數據10
11、. PSP的軟件開發過程10.3 PSP的過程腳本如后表所示n計劃階段首先獲得項目的需求,然后完成項目項目計劃總結表計劃總結表,最后把計劃所花費的時間記錄在時間時間記錄日志記錄日志上。n設計階段設計這個程序。用流程圖或偽碼等指定的格式記錄設計的內容。該階段結束時,把設計時間記錄在時間記錄日志時間記錄日志上。n編碼階段利用所選擇的程序設計語言來實現該設計。使用一致的編碼格式。結束時在時間記錄日時間記錄日志志上記錄編碼所花費的時間。10. PSP的軟件開發過程10.3 PSP的過程腳本n編譯階段編譯程序并改正所有發現的缺陷。修復缺陷直到正確編譯無錯為止。所有花費在這一階段的時間記為編譯時間編譯時間
12、,包括修改設計和改正代碼的時間。該階段結束時,在時間記錄日志時間記錄日志上記錄編編譯時間譯時間。n測試階段進行充分的測試以保證程序滿足所有的需求,并且能夠不帶任何錯誤通過一組全面的測試集。所有花費在這一階段的時間記為測試時間,測試時間,其中包括修改設計、改正代碼和重新編譯的時間。該階段結束時,在時間記錄日志時間記錄日志上記錄測試時間測試時間。n后置處理階段完成項目計劃總結表項目計劃總結表中所有有關實際數據的那些欄目。然后登入一個估計的后置處理階段的時間。10. PSP的軟件開發過程目的目的PSP過程腳本:過程腳本: 指導用戶進行小型程序的開發指導用戶進行小型程序的開發入口準則問題描述;PSP項
13、目計劃總結表;以前開發的程序的實際規模和時間數據;時間記錄日志;計劃獲取對程序功能的描述;估計整個程序的代碼行數及其最大值和最小值;確定開發效率(Mins/LOC);計算總開發時間及其最大值和最小值;將計劃數據填入項目計劃總結表;最后把計劃所花費的時間記錄在時間記錄日志上。設計設計程序;按照指定的格式記錄設計文檔;把設計階段所花費的時間記錄在時間記錄日志上。編碼實現設計;使用標準格式來書寫程序;把編碼階段所花費的時間記錄在時間記錄日志上。編譯編譯程序;修復所有發現的錯誤;把編譯階段所花費的時間記錄在時間記錄日志上。測試測試程序;修復所有發現的錯誤;把測試階段所花費的時間記錄在時間記錄日志上。后
14、置處理把實際的規模和時間數據記錄在項目計劃總結表;將后置階段所花費的時間記錄在時間記錄日志上。出口準則經過詳盡測試的程序;較好的設計文檔;完整的程序清單;已經填好的項目計劃總結表;已經填好的時間記錄日志。10.4 帶有PSP過程腳本的項目計劃總結表 示例2學生:曾笑寒學生:曾笑寒日期:日期:10/7/2002程序:程序:程序號程序號#:8教師:教師:ZENGYI 程序設計語言:程序設計語言:PASCAL總結總結計劃計劃實際實際累計累計Mins/LOC7.827.217.21LOC/Hour7.678.328.32程序規模程序規模 LOC計劃計劃實際實際新開發與更改的261919最大值36最小值
15、18開發時間開發時間 Min計劃計劃實際實際累計累計累計百分比累計百分比計劃10442.9設計19000編碼118616144.6編譯12212115.3測試29434331.4后置處理15885.8總計203137137100.0最大值282最小值141該階段的累計時間/總的累計時間*100對每個階段,計算并登入實際開發時間與最近的前一個程序的累計時間之和作業完成后,根據時間記錄中的數據登入最近的前一個程序的項目計劃總結表中,找到各個階段所花費的時間的累計百分比,乘以總的開發時間,即得到各階段的計劃開發時間:4/137*100=2.9110.4 帶有PSP過程腳本的項目計劃總結表 示例3學生
16、:曾笑寒學生:曾笑寒日期:日期:10/21/2002程序:程序:程序號程序號#:9教師:教師:ZENGYI 程序設計語言:程序設計語言:PASCAL總結總結計劃計劃實際實際累計累計Mins/LOC7.216.76LOC/Hour8.328.88程序規模程序規模 LOC計劃計劃實際實際新開發與更改的232929最大值31最小值15開發時間開發時間 Min計劃計劃實際實際累計累計累計百分比累計百分比計劃511154.5設計012123.6編碼748514643.96編譯25284914.7測試52499227.6后置處理1011195.7總計166= 7.21* 23196333100.0最大值2
17、24= 7.21* 31最小值108= 7.21* 15前表累4+本表實11=15本表15/本表333=4.5前表累計百分比2.9*本表總計166=5前表值60/ 7.21總計開發時間的累計值除以新開發和更改的代碼行的累計值196/29=6.7660/6.7611. PSP的缺陷及其記錄11.1什么是缺陷n缺陷是指程序中存在的錯誤,如語法、拼寫、標點錯誤,不正確的、冗余的、被忽略的語句等n缺陷可能出現在程序的需求中、設計中或文檔中n缺陷不是無足輕重的Bug,而更像是定時炸彈n缺陷是任何影響到程序完整而有效地滿足用戶要求的東西n缺陷是客觀的事物,可以標識、描述和統計11. PSP的缺陷及其記錄1
18、1.2缺陷和質量n軟件質量影響到開發費用、交付日期、用戶滿意度n有了明確的需求,才能開發出高質量的軟件產品n高質量的軟件產品必須滿足用戶的功能要求n只有軟件能夠正常運行才能使用功能n能讓軟件正常運行就必須排除軟件中的缺陷n絕大部分程序缺陷排除后,才能考慮軟件質量的其他目標n兩個重要問題:兩個重要問題:查找和標識缺陷/確定缺陷起因11. PSP的缺陷及其記錄11.3缺陷的分類n目的通過對缺陷分類,可以迅速找出那一類缺陷的問題最大,然后集中精力預防和排除這一類缺陷n原則把具有普遍性的問題進行分類n使用在收集到大量程序的缺陷數據后,才能進一步細分某一類為若干個子類11. PSP的缺陷及其記錄11.3
19、缺陷的分類 缺缺 陷陷 類類 型型 標標 準準類型編號類型名稱描述10文檔注釋,消息20語法拼寫,標點符號,打字,指令格式30聯編打包變更管理,庫,版本控制40賦值說明,重名,作用域,限制50接口過程調用/引用,輸入/輸出,用戶格式60檢查出錯信息,不合適的檢查70數據結構,內容80函數邏輯,指針,循環,遞歸,計算,函數缺陷90系統配置,記時,內存100環境設計,編譯,測試,其它支持系統問題11. PSP的缺陷及其記錄11.4缺陷的收集n收集程序中的缺陷數據的步驟n為程序中發現的每一個缺陷做一個記錄n對于每個缺陷要記錄足夠詳細的信息,以便以后能更好地了解這個缺陷n分析這些數據以找出哪些缺陷類型
20、引起大部分的問題n設計出發現和修復這些缺陷的方法n別人在你的程序中發現的缺陷n了解、確定你的個體軟件過程的弱點n改善你的個體軟件過程11. PSP的缺陷及其記錄11.5缺陷記錄日志幫助收集缺陷數據學生:學生:日期:日期:教師:教師:程序號:程序號:日期編號類型引入階段排除階段修改時間修復缺陷描述:描述:描述:描述:本程序的缺陷順序編號一個缺陷占一行在修復缺陷后,登入缺陷類型。使用前面的缺缺陷類型標準陷類型標準。在排除缺陷后記錄過程階段。一般是指發現缺陷和修復這個的階段一般是指從開始意識到缺陷的存在時算起,直到修復完成且檢查無誤的估計時間如果在修復另一個缺陷時引入了此缺陷,記錄這不正當的修復缺陷
21、的編號。如果不能確定這個相關缺陷的編號,則記入X.登入對當前缺陷的簡單描述。應該能看出該缺陷的起因以及你為什么作出這種判斷。11. PSP的缺陷及其記錄11.5缺陷記錄日志n收集缺陷數據的目的n提高程序設計水平管好缺陷n減少程序中缺陷的個數使用合適的方法n節省時間排除缺陷越早越好n節約開支單元測試后,查找修復缺陷的費用平均以10倍速度增長n負責任地完成工作誰引入誰排除11.6更新的PSP過程增加了缺陷數據的收集和記錄目的目的PSP過程腳本:過程腳本: 指導用戶進行小型程序的開發指導用戶進行小型程序的開發入口準則問題描述;PSP項目計劃總結表;以前開發的程序的實際規模和時間數據;時間記錄日志;缺
22、陷記錄日志;缺陷記錄日志;計劃獲取對程序功能的描述;估計整個程序的代碼行數及其最大值和最小值;確定開發效率(Mins/LOC);計算總開發時間及其最大值和最小值;將計劃數據填入項目計劃總結表;最后把計劃所花費的時間記錄在時間記錄日志上。設計設計程序;按照指定的格式記錄設計文檔;把設計階段所花費的時間記錄在時間記錄日志上。編碼實現設計;使用標準格式來書寫程序;把編碼階段所花費的時間記錄在時間記錄日志上。編譯編譯程序;修復和記錄和記錄所有發現的錯誤;把編譯階段所花費的時間記錄在時間記錄日志上。測試測試程序;修復所有發現的錯誤;把測試階段所花費的時間記錄在時間記錄日志上。后置處理把實際的規模和時間和
23、缺陷數據和缺陷數據記錄在項目計劃總結表;將后置階段所花費的時間記錄在時間記錄日志上。出口準則經過詳盡測試的程序;較好的設計文檔;完整的程序清單;已經填好的項目計劃總結表;已經填好的時間記錄日志和缺陷日志缺陷日志。11.7增加了缺陷數據的PSP項目計劃總結表 示例4學生:曾笑寒學生:曾笑寒日期:日期:10/28/2002程序號程序號#:10 程序設計語言:程序設計語言:PASCAL總結總結 Mins/LOC計劃計劃 6.76實際實際 6.12累計累計 6.5LOC/Hour 8.88 9.80 9.23程序規模程序規模 LOC計劃計劃實際實際新開發與更改的4457105最大值58最小值30開發時
24、間開發時間 Min計劃計劃實際實際累計累計累計百分比累計百分比計劃1318334.8設計1143558.1編2編譯44217010.2測試827316524.2后置處理1732517.5總計297349682100.0最大值392最小值203引入的缺陷引入的缺陷 設計2225.0編碼6675.0總計88100.0排除的缺陷排除的缺陷 編譯6675.0測試2225.0總計88100.0總計開發時間的累計值除以新開發和更改的代碼行的累計值。例如,682/105=6.560/6.5=9.2319+29+57=105新增部分12. PSP的缺陷查找技術12.1發現缺陷的多種方
25、法的步驟n標識缺陷的征兆n從征兆推斷出缺陷的位置n確定程序中的錯誤n決定如何修復缺陷n修復缺陷n驗證這個修復是否已經解決了這個問題12. PSP的缺陷查找技術 12.2發現和修復缺陷的方法n用編譯器不能檢查出所有的缺陷n編譯器可以在源程序有缺陷的情況下生成代碼n編譯器只能查出大約90%的語法錯誤和很少的邏輯錯誤n測試需要測試人員形成測試用例n測試用例=測試數據集合+期望結果集合n測試只能找出缺陷征兆而不能找出根源n測試不能找出所有的缺陷,測試的效果有限n單元測試發現大約50%的缺陷n系統測試發現進入該階段的缺陷的30%n發行有缺陷的產品等待用戶發現和反饋信息n事實證明花費太大。IBM每年花費2
26、.5億修復1.3萬缺陷n個人復查清單個人復查清單有效發現和修復缺陷的方法n同行評審同行評審一般會發現程序中一般會發現程序中50%70%的缺陷的缺陷12. PSP的缺陷查找技術12.3代碼復查n在編碼完成后并在編譯和測試前進行n先做復查將節省大量的編譯時間(可縮短至3%)n細心工作是有回報的n可以直接找到問題本身n與單元測試相比,效率提高35倍n單元: 46 個缺陷 n代碼復查:610個缺陷n缺點:耗時且難恰當進行n有經驗的人只能發現程序中平均7580%的缺陷12.3代碼復查代碼復查腳本代碼復查腳本目的目的PSP過程腳本之過程腳本之 代碼復查腳本代碼復查腳本入口準則在復查前,檢查下列產品是否已經
27、準備好:需求陳述文檔;程序設計文檔;程序的源代碼清單;編碼標準復查規程首先,完成源程序編碼;然后,在進行編譯和測試之前,打印一份源程序清單;進行代碼復查;進行復查時,仔細檢查每一行源程序,盡可能多地發現和修復缺陷;修復缺陷修復所發現的每一個缺陷;確保所做的修復正確無誤;將缺陷登入在缺陷記錄日志覆蓋率復查驗證程序設計覆蓋了需求文檔中描述的每一個功能;驗證程序代碼實現了所有設計;程序邏輯復查驗證程序設計在邏輯上是正確的;驗證程序代碼正確地實現了設計中的邏輯;命名和類型檢查驗證所有的名字和類型已經正確地聲明和使用;檢查整型、長整型和浮點型是否正確聲明;變量檢查確保每個變量已經初始化;檢查上溢、下溢或
28、越界問題;程序語法檢查驗證程序代碼符合編程語言的規格說明;出口準則在復查結束時,應該有完整的、修復過的源程序清單;填寫完整的時間記錄日志;填寫完整的缺陷記錄日志;12.4更新后的PSP過程腳本增加代碼復查目的目的PSP過程腳本:過程腳本: 指導用戶進行小型程序的開發指導用戶進行小型程序的開發入口準則問題描述;PSP項目計劃總結表;以前開發的程序的實際規模和時間數據;時間記錄日志;缺陷記錄日志;缺陷記錄日志;計劃獲取對程序功能的描述;估計整個程序的代碼行數及其最大值和最小值;確定開發效率(Mins/LOC);計算總開發時間及其最大值和最小值;將計劃數據填入項目計劃總結表;最后把計劃所花費的時間記
29、錄在時間記錄日志上。設計設計程序;按照指定的格式記錄設計文檔;把設計階段所花費的時間記錄在時間記錄日志上。編碼實現設計;使用標準格式來書寫程序;把編碼階段所花費的時間記錄在時間記錄日志上。代碼復查復查所有的源程序代碼;遵照代碼復查腳本;修復并記錄所發現的每一個缺陷;將代碼復查階段所花費的時間記入時間記錄日志;編譯編譯程序;修復和記錄和記錄所有發現的錯誤;把編譯階段所花費的時間記錄在時間記錄日志上。測試測試程序;修復所有發現的錯誤;把測試階段所花費的時間記錄在時間記錄日志上。后置處理把實際的規模和時間和缺陷數據和缺陷數據記錄在項目計劃總結表;將后置階段所花費的時間記錄在時間記錄日志上。出口準則經
30、過詳盡測試的程序;較好的設計文檔;完整的程序清單;已經填好的項目計劃總結表;已經填好的時間記錄日志和缺陷日志缺陷日志。12. PSP的缺陷查找技術12.4更新后的PSP項目計劃總結表 n增加了代碼復查代碼復查項的PSP項目計劃總結表 n示例5 程序#11學生:曾笑寒學生:曾笑寒日期:日期:11/4/2002程序號程序號#:11 程序設計語言:程序設計語言:PASCAL總結總結 Mins/LOC計劃計劃 6.50實際實際 5.88累計累計 6.30LOC/Hour 9.23 10.20 9.52程序規模程序規模 LOC計劃計劃實際實際新開發與更改的5348153最大值72最小值35開發時間開發時
31、間 Min計劃計劃實際實際累計累計累計百分比累計百分比計劃1715485.8設計2828838.6編6代碼復查036363.7編譯357778.0測試833820321.1后置處理2626778.0總計345282964100.0最大值468最小值228引入的缺陷引入的缺陷 設計1321.4編碼51178.6代碼復查總計614100.0排除的缺陷排除的缺陷 代碼復查3321.4編譯2857.2測試1321.4總計614100.0引入代碼復查機制后,編譯錯誤變少了引入代碼復查機制后,編譯工作時間變少了引入代碼復查機制后,引入的缺陷變少了13. PSP的代碼復查檢查表13
32、.1檢查表的用途n代碼復查的關鍵是要有一個高效的復查規程n代碼復查檢查表包括一系列規程式的步驟n如果想發現和改正程序中的每一個缺陷,就必須遵照一個精確的規程n檢查表可以幫助確保遵循這個規程n正確使用檢查表可以知道每個步驟發現的缺陷數,也就能測量出復查過程的效率,以便改進檢查表n檢查表包括了個人的經驗,可以不斷地使用和改進13. PSP的代碼復查檢查表13.2建立個人檢查表某種語言代碼 程序名和程序號#:目的指導你進行有效的代碼復查#累計累計%一般性說明在完成每個復查步驟之后,將發現的某個類型的缺陷的個數記錄在右面欄目中。如果該步驟沒有發現缺陷,就在右面的欄目中打個表示檢查無誤的符號(X)。在開
33、始復查下一個程序單元之前,要按照檢查表完成規定的一些檢查項目,例如對程序、類、對象或方法的檢查。項目1復查內容項目n復查內容全面檢查對整個程序全面檢查以發現系統問題和非期望的或用戶問題。總計例如,完整性、include、初始化、函數調用、名字、字符串、指針、輸入/輸出格式、括號配對、邏輯符號的合理性、逐行檢查(語法、分號、標點符號等)、文件的打開與關閉、編碼標準編碼標準的符合程度、全面檢查13.3更新后的PSP過程腳本增加代碼復查目的目的PSP過程腳本之過程腳本之 代碼復查腳本代碼復查腳本入口準則在復查前,檢查下列產品是否已經準備好:需求陳述文檔;程序設計文檔;程序的源代碼清單;編碼標準編碼標
34、準 例例C+編碼標準編碼標準.doc一般性說明使用代碼復查表;在復查時遵照代碼復查檢查表的使用說明;在復查結束時,填寫累計、累計百分比和總結欄目;復查規程首先,完成源程序編碼;然后,在進行編譯和測試之前,打印一份源程序清單;進行代碼復查;進行復查時,仔細檢查每一行源程序,盡可能多地發現和修復缺陷;修復缺陷修復所發現的每一個缺陷;確保所做的修復正確無誤;將缺陷登入在缺陷記錄日志覆蓋率復查驗證程序設計覆蓋了需求文檔中描述的每一個功能;驗證程序代碼實現了所有設計;程序邏輯復查驗證程序設計在邏輯上是正確的;驗證程序代碼正確地實現了設計中的邏輯;命名和類型檢查驗證所有的名字和類型已經正確地聲明和使用;檢
35、查整型、長整型和浮點型是否正確聲明;變量檢查確保每個變量已經初始化;檢查上溢、下溢或越界問題;程序語法檢查驗證程序代碼符合編程語言的規格說明;出口準則在復查結束時,應該有完整的、修復過的源程序清單;填寫完整的時間記錄日志;填寫完整的缺陷記錄日志;13.4增加檢查表的PSP過程腳本目的目的PSP過程腳本:過程腳本: 指導用戶進行小型程序的開發指導用戶進行小型程序的開發入口準則問題描述;PSP項目計劃總結表;代碼復查檢查表代碼復查檢查表;以前開發的程序的實際規模和時間數據;時間記錄日志;缺陷記錄日志;計劃獲取對程序功能的描述;估計整個程序的代碼行數及其最大值和最小值;確定開發效率(Mins/LOC
36、);計算總開發時間及其最大值和最小值;將計劃數據填入項目計劃總結表;最后把計劃所花費的時間記錄在時間記錄日志上。設計設計程序;按照指定的格式記錄設計文檔;把設計階段所花費的時間記錄在時間記錄日志上。編碼實現設計;使用標準格式來書寫程序;把編碼階段所花費的時間記錄在時間記錄日志上。代碼復查復查所有的源程序代碼;遵照代碼復查腳本;修復并記錄所發現的每一個缺陷;將代碼復查階段所花費的時間記入時間記錄日志;編譯編譯程序;修復和記錄所有發現的錯誤;把編譯階段所花費的時間記錄在時間記錄日志上。測試測試程序;修復所有發現的錯誤;把測試階段所花費的時間記錄在時間記錄日志上。后置處理把實際的規模和時間和缺陷數據
37、記錄在項目計劃總結表;復查缺陷數據并更新代碼復查檢復查缺陷數據并更新代碼復查檢查表;查表;將后置階段所花費的時間記錄在時間記錄日志上。出口準則經過詳盡測試的程序;較好的設計文檔;一個完成的代碼復查檢查表;一個完成的代碼復查檢查表;完整的程序清單;已經填好的項目計劃總結表;已經填好的時間記錄日志和缺陷日志。13. PSP的代碼復查檢查表13.5某學生的缺陷數據排列表Pareto分布類型編號引入缺陷排除缺陷復查漏過的缺陷設計編碼其他復查編譯測試802314520844440231445021126010030107090總計416510515倒序13. PSP的代碼復查檢查表類型編號引入缺陷排除缺
38、陷復查漏過的缺陷設計編碼其他復查編譯測試80231452084444023144502112程序程序#10 #2662811 #15322312 #152224總計416510515因為學生沒有對程序10做代碼復查,所以他把編譯與測試階段發現的所有缺陷都記為代碼復查漏過的缺陷。14. PSP的缺陷預測14.1缺陷率n軟件工程師在工作中肯定會引入缺陷n一般情況下n平均引入率:100個缺陷/千行代碼n有經驗的: 50個缺陷/千行代碼n軟件工程師應該了解自己引入缺陷的類型和數目n減少缺陷率方面,編程規范和對缺陷的跟蹤與分析比經驗有效14. PSP的缺陷預測14.2缺陷數據的使用n收集缺陷數據是幫助你
39、了解自己引入的缺陷n利用這些數據來設計自己的個人代碼復查檢查表n利用這些數據來估計在新開發的程序中引入的缺陷數n利用這些歷史數據來對程序開發的各個階段將引入的和排除的缺陷數作出一個相當合理的預測n準確估計缺陷是重要的通過分析缺陷數據n工程師的個人承諾要開發無缺陷的程序是重要的14. PSP的缺陷預測14.3缺陷密度n每千行代碼的缺陷數Defects/KLOCn計算步驟n累計開發過程中每個階段發現的缺陷總數 Dn統計程序中新開發的和修改的代碼行數新開發的和修改的代碼行數 Nn計算每千行代碼的缺陷數 Dd=1000*D/Nn例如,一個96行的源程序有14個缺陷,則其Dd=1000*14/96=14
40、5.83 Defects/KLOC14. PSP的缺陷預測14.4缺陷的預測n缺陷率的波動與預測的精確度n與個人經驗有關n與個體過程不穩定有關n缺陷估計nNd plan=1000*(D1+Dn)/(N1+Nn)n例如,假設有5個程序的數據,則原來的Nd plan=1000*(6+11+7+9+5)/(37+62+49+53+28)=165.94 Defects/KLOCn假設新程序有同樣的缺陷密度,則新程序的缺陷數為:Dplan =Nplan * Nd plann例如,假設新程序有規模估計為56行,則其預期的缺陷數為: Dplan =56* 165.94 /1000=9.29Defects以前
41、各程序發現的缺陷以前各程序新開發和修改的代碼行估計新程序新開發和修改的代碼行數估計新程序的缺陷數14. PSP的缺陷預測目的目的PSP過程腳本:過程腳本: 指導用戶進行小型程序的開發指導用戶進行小型程序的開發入口準則問題描述;PSP項目計劃總結表;代碼復查檢查表;以前開發的程序的實際規模和時間數據;時間記錄日志;缺陷記錄日志;計劃獲取對程序功能的描述;估計整個程序的代碼行數及其最大值和最小值;確定開發效率(Mins/LOC);計算總開發時間及其最大值和最小值;估計各個開發階段將引入和排除的缺陷的估計各個開發階段將引入和排除的缺陷的個數;個數;將計劃數據填入項目計劃總結表;最后把計劃所花費的時間
42、記錄在時間記錄日志上。設計設計程序;按照指定的格式記錄設計文檔;把設計階段所花費的時間記錄在時間記錄日志上。編碼實現設計;使用標準格式來書寫程序;把編碼階段所花費的時間記錄在時間記錄日志上。代碼復查復查所有的源程序代碼;遵照代碼復查腳本;修復并記錄所發現的每一個缺陷;將代碼復查階段所花費的時間記入時間記錄日志;編譯編譯程序;修復和記錄所有發現的錯誤;把編譯階段所花費的時間記錄在時間記錄日志上。測試測試程序;修復所有發現的錯誤;把測試階段所花費的時間記錄在時間記錄日志上。后置處理把實際的規模和時間和缺陷數據記錄在項目計劃總結表;復查缺陷數據并更新代碼復查檢查表;將后置階段所花費的時間記錄在時間記
43、錄日志上。出口準則經過詳盡測試的程序;較好的設計文檔;一個完成的代碼復查檢查表;完整的程序清單;已經填好的項目計劃總結表;已經填好的時間記錄日志和缺陷日志。項目計劃總結表項目計劃總結表例例1學生:曾笑寒學生:曾笑寒日期日期11/11/2002程序號程序號#:12程序設計語言:程序設計語言:PASCAL總結總結 Mins/LOC計劃計劃 6.3實際實際 4.93累計累計 5.92LOC/Hour 9.52 12.17 10.14Defects/KLOC 94.79程序規模程序規模 LOC計劃計劃實際實際新開發與更改的5158211最大值65最小值37開發時間開發時間 Min計劃計劃實際實際累計累
44、計累計百分比累計百分比計劃1618665.8設計274412710.2編5代碼復查1238745.9編譯2611887.0測試682923218.6后置處理26421199.5總計3212861250100.0最大值410最小值233包括到程序12#已累計發現20個缺陷,累計開發程序211LOC,因此有20/211*1000缺陷密度為程序13#提供缺陷估計,以及缺陷在各開發階段的計劃估計值提供計算依據項目計劃總結表項目計劃總結表例例1(續)(續)學生:曾笑寒學生:曾笑寒日期日期11/11/2002程序號程序號#:12程序設計語言:程序設計語言:PASCAL引入的缺陷引
45、入的缺陷計劃計劃實際實際累計累計累計百分比累計百分比計劃1420.0設計51680.0編碼代碼復查編譯測試后置處理總計620100.0排除的缺陷排除的缺陷 計劃設計編碼代碼復查2525.0編譯21050.0測試2525.0總計620100.0項目計劃總結表項目計劃總結表例例2學生:曾笑寒學生:曾笑寒日期日期11/18/2002程序號程序號#:13程序設計語言:程序設計語言:PASCAL總結總結 Mins/LOC計劃計劃 5.92實際實際 4.47累計累計 5.92LOC/Hour 10.14 12.32 10.49Defects/KLOC94.79106.4 96.90程序規模程序規模 LOC
46、計劃計劃實際實際新開發與更改的5847258最大值72最小值41開發時間開發時間 Min計劃計劃實際實際累計累計累計百分比累計百分比計劃1822886.0設計352415110.2編碼1499363743.1代碼復查20371117.5編譯244926.2測試64824016.2后置處理334116010.8總計3432291479100.0最大值426最小值243本程序實際引入缺陷5個,新開發和修改的實際代碼行47,5/47*1000=106.4包括到程序12#已累計發現25個缺陷,累計開發程序258LOC,因此有25/258*1000程序12#的結果程序12#的結果5.92* 585.92
47、* 725.92* 41計劃值以12#程序的累計百分比為依據*343項目計劃總結表項目計劃總結表例例2(續)(續)學生:曾笑寒學生:曾笑寒日期日期11/18/2002程序號程序號#:13程序設計語言:程序設計語言:PASCAL引入的缺陷引入的缺陷計劃計劃實際實際累計累計累計百分比累計百分比計劃設計1416.0編碼552184.0代碼復查編譯測試后置處理總計6525100.0排除的缺陷排除的缺陷 計劃設計編碼代碼復查23832.0編譯321248.0測試1520.0總計6525100.0估計缺陷數=程序12#的Defects/KLOC*本程序的計劃代碼行長58/1000=5.5約6個缺陷,然后按
48、程序12#的引入和排除的累計百分比值,計算出各個階段預計/計劃引入和排除的缺陷數。這樣即完成了缺陷預測。缺陷預測。開發完成后登入開發完成后登入15. 缺陷排除的經濟效益n缺陷排除是一種經濟學問題n軟件費用n時間進度n軟件質量n重要問題n缺陷排除的相對費用n把缺陷留給客戶的影響n以及所導致的用戶支持費用15. 缺陷排除的經濟效益15.1高質量工作的必要性n三十年后與三十年前軟件工程師的工作幾乎沒有改變n單元測試n集成測試n產品交付后的缺陷修復n更好的原則和方法n保證質量的原則是在第一次就要開發出合格的產品n按照PSP的建議去做15. 缺陷排除的經濟效益15.2缺陷排除問題n缺陷難于查找和修復,所
49、以排除缺陷的花費很大n軟件系統的規模和復雜度大約每十年增長十倍n了解和控制缺陷帶來的費用測量缺陷排除的效果n計算每小時排除缺陷的個數n計算缺陷排除效益,即測量通過某一排除方法所發現的缺陷百分比n例如,對一個開始測試時有100個缺陷的產品,測試發現45個缺陷,那么缺陷排除效益就是45%。n知道了缺陷排除方法和缺陷排除效率后,就可更好地發現和修復缺陷。15. 缺陷排除的經濟效益15.3缺陷排除時間n對于大型軟件,發現和修復缺陷需要大量時間nMicrosoft NT測試時花費了250個工程師一年的時間,共發現和修復30000個缺陷,平均1/16hn一般每個缺陷需要若干個小時來復查和修復n缺陷越多,修
50、改越遲,修改工作的費用就越大15. 缺陷排除的經濟效益15.3缺陷引入和排除的經驗n缺陷管理計算和跟蹤缺陷的引入率和排除率缺陷的引入率和排除率缺陷引入階段缺陷引入率設計階段13個缺陷/h編碼階段58個缺陷/h測試階段24個缺陷/h代碼復查階段612個缺陷/h缺陷排除階段缺陷排除率測試階段24個缺陷/h代碼復查階段810個缺陷/h15. 缺陷排除的經濟效益15.4在項目計劃總結表中每個小時缺陷數的計算n計算各階段累計每小時引入缺陷數n60*(該階段累計引入缺陷數)/(該階段累計花費分鐘數)n計算各階段累計每小時排除缺陷數n60*(該階段累計排除缺陷數)/(該階段累計花費分鐘數)15.4在項目計劃
51、總結表中每個小時缺陷數的計算例 程序號程序號#:13 表表1學生:曾笑寒學生:曾笑寒日期日期11/18/2002程序號程序號#:13程序設計語言:程序設計語言:PASCAL總結總結 Mins/LOC計劃計劃 5.92實際實際 4.47累計累計 5.92LOC/Hour 10.14 12.32 10.49Defects/KLOC94.79106.4 96.90過程效益過程效益33.336032程序規模程序規模 LOC計劃計劃實際實際新開發與更改的5847258最大值72最小值41開發時間開發時間 Min計劃計劃實際實際累計累計累計百分比累計百分比計劃1822886.0設計352415110.2編
52、碼1499363743.1代碼復查20371117.5編譯244926.2測試64824016.2后置處理334116010.8總計3432291479100.0最大值426最小值243過程效益plan = 100*2/(1+5)=33.33過程效益actual = 100*3/5=60過程效益ToDate = 100*8/(4+21)=3215.4在項目計劃總結表中每個小時缺陷數的計算例 程序號程序號#:13 表表1(續)(續)學生:曾笑寒學生:曾笑寒日期日期11/18/2002程序號程序號#:13程序設計語言:程序設計語言:PASCAL引入的缺陷引入的缺陷計劃計劃實際實際累計累計累計百分比
53、累計百分比Def./Hour計劃設計1416.01.59編碼552184.01.98代碼復查編譯測試后置處理總計6525100.0排除的缺陷排除的缺陷 計劃Def./Hour設計編碼代碼復查23832.04.32編譯321248.07.87測試1520.01.25總計6525100.060*4/151=1.5960*21/637=1.9860*5/240=1.2560*12/92=7.8760*8/111=4.32編譯前計劃的引入缺陷數1+5編譯前計劃的排除缺陷數2缺陷排除率缺陷引入率15. 缺陷排除的經濟效益15.5缺陷排除效益的計算n當在某個階段排除缺陷時,你可能相知道自己在這個階段發現了多少缺陷,還漏掉了多少缺陷n歷史數據可以讓你計算和跟蹤缺陷排除效益n缺陷排除效益第一次編譯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個性課件開頭介紹
- 運輸服務合同模板
- 三方產品分銷合同范本
- 綜合建筑工程施工合同
- 普法宣講【法律學堂】第十八章 行政答辯狀-ldfjxs004
- 四川省南充市廣安市廣安中學2025屆初三調研考試(語文試題)試卷含解析
- 陶瓷酒瓶采購合同
- 上海杉達學院《實時操作系統》2023-2024學年第二學期期末試卷
- 江蘇信息職業技術學院《工程圖學2》2023-2024學年第二學期期末試卷
- 陜西雇傭合同
- 2025年上海市虹口區高三語文二模作文題目解析及5篇范文:機器成為思想的引擎必將給蘆葦帶來深刻的變化
- 2025年甘肅西北永新集團招聘11人筆試參考題庫附帶答案詳解
- 檢測站登錄員試題及答案
- 委托選礦加工合同協議
- 食堂應急預案管理制度
- CISP-PTE培訓課件教學課件
- 2025年新高考歷史預測模擬試卷黑吉遼蒙卷(含答案解析)
- 2025年醫院文化節活動策劃
- 部隊防雷電暴雨安全知識
- 2025年消防文員類面試題及答案
- 重慶市名校聯盟2024-2025學年高二上學期第一次聯合考試物理試題(解析版)
評論
0/150
提交評論