freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

軟件編程規(guī)范培訓(xùn)實(shí)例與練習(xí)-cmmi(已修改)

2025-07-10 22:25 本頁面
 

【正文】 軟件編程規(guī)范培訓(xùn)實(shí)例與練習(xí) ? 問題分類 1 邏輯類問題( A類)-指設(shè)計(jì)、編碼中出現(xiàn)的計(jì)算正確性和一致性、程序邏輯控制等方面出現(xiàn)的問題,在系統(tǒng)中起關(guān)鍵作用,將導(dǎo)致軟件死機(jī)、功能正常實(shí)現(xiàn)等嚴(yán)重問題; 接口類問題( B類)-指設(shè)計(jì)、編碼中出現(xiàn)的函數(shù)和環(huán)境、其他函數(shù)、全局 /局部變量或數(shù)據(jù)變量之間的數(shù)據(jù) /控制傳輸不匹配的問題,在系統(tǒng)中起重要作用,將導(dǎo)致模塊間配合失效等嚴(yán)重問題; 維護(hù)類問題( C類)-指設(shè)計(jì)、編碼中出現(xiàn)的對(duì)軟件系統(tǒng)的維護(hù)方便程度造成影響的問題,在系統(tǒng)中不起關(guān)鍵作用,但對(duì)系 統(tǒng)后期維護(hù)造成不便或?qū)е戮S護(hù)費(fèi)用上升; 可測(cè)試性問題( D類)-指設(shè)計(jì)、編碼中因考慮不周而導(dǎo)致后期系統(tǒng)可測(cè)試性差的問題。 ? 處罰辦法 問題發(fā)生率: P=D/S D=DA++ 其中: P -問題發(fā)生率 D - 1個(gè)季度內(nèi)錯(cuò)誤總數(shù) DA - 1個(gè)季度內(nèi) A類錯(cuò)誤總數(shù) DB - 1個(gè)季度內(nèi) B類錯(cuò)誤總數(shù) DC - 1個(gè)季度內(nèi) C類錯(cuò)誤總數(shù) S - 1個(gè)季度內(nèi)收到問題報(bào)告單總數(shù) 1)當(dāng) D≥ 3時(shí),如果 P≥ 3%,將進(jìn)行警告處理,并予以公告; 2)當(dāng) D≥ 5時(shí),如果 P≥ 5%,將進(jìn)行罰款處理,并予以公告。 目 錄 一、邏輯類代碼問題 第 5頁 變量 /指針在使用前就必須初始化 第 5頁 【案例 】 第 5頁 防止指針 /數(shù)組操作越界 第 5頁 【案例 】 第 5頁 【案例 】 第 6頁 【案例 】 第 7頁 【案例 】 第 8頁 避免指針的非法引用 第 9頁 【案例 】 第 9頁 變量類型定義錯(cuò)誤 第 10頁 【案例 】 第 10頁 正確使用邏輯與 amp。amp。、屏蔽 amp。操作符 第 17頁 【案例 】 第 17頁 注意數(shù)據(jù)類型的匹配 第 18頁 【案例 】 第 18頁 【案例 】 第 18頁 用于控制條件轉(zhuǎn)移的表達(dá)式及取值范圍是否書寫正確 第 20頁 【案例 】 第 20頁 【案例 】 第 21頁 【案例 】 第 22頁 條件分支處理是否有遺漏 第 24頁 【案例 】 第 24頁 引用已釋放的資源 第 26頁 【案例 】 第 26頁 分配資源是否已正確釋放 第 28頁 【案例 】 第 28頁 【案例 】 第 29頁 【案例 】 第 30頁 【案例 】 第 32頁 【案例 】 第 33頁 【案例 】 第 35頁 【案例 】 第 38頁 1防止資源的重復(fù)釋放 第 39頁 【案例 】 第 39頁 1公共資源的互斥性和競(jìng)用性 第 40頁 【案例 】 第 40頁 【案例 】 第 40頁 二、接口類代碼問題 第 43頁 對(duì)函數(shù)參數(shù)進(jìn)行有效性檢查 第 43頁 【案例 】 第 43頁 【案例 】 第 43頁 【案例 】 第 44頁 【案例 】 第 46頁 【案例 】 第 47頁 【案例 】 第 48頁 注意多出口函數(shù)的處理 第 49頁 【案例 】 第 49頁 三、維護(hù)類代碼問題 第 51頁 統(tǒng)一枚舉類型的使用 第 51頁 【案例 】 第 51頁 注釋量至少占代碼總量的 20% 第 51頁 【案例 】對(duì) XXX產(chǎn)品 BAM某版本部分代碼注釋量的統(tǒng)計(jì) 第 51頁 四、產(chǎn)品兼容性問題 第 52頁 系統(tǒng)配置、命令方式 第 52頁 【案例 】 第 52頁 【案例 】 第 53頁 設(shè)備對(duì)接 第 54頁 【案例 】 第 54頁 其他 第 55頁 【案例 】 第 55頁 五、版本控制問題 第 58頁 新老代碼中同一全局變量不一致 第 58頁 【案例 】 第 58頁 六、可測(cè)試性代碼問題 第 59頁 調(diào)試信息 /打印信息的正確性 第 59頁 【案例 】 第 59頁 一、邏輯類代碼問題 變量 /指針在使用前就必須初始化 【案例 】 C語言中最大的特色就是指針。指針的使用具有很強(qiáng)的技巧性和靈活性,但同時(shí)也帶來了很大的危險(xiǎn)性。在 XXX的代碼中有如下一端對(duì)指針的靈活使用: ... ... _UC *puc_card_config_tab。 ... ... Get_Config_Table( AMP_CPM_CARD_CONFIG_TABLE, amp。ul_card_config_num, amp。puc_card_config_tab, use_which_data_area )。 ... ... b_middle_data_ok = generate_trans_middle_data_from_origi nal_data( puc_card_config_tab, Ul_card_config_num) .... ... 其中紅色部分巧妙的利用指向指針的指針為指針 puc_card_config_tab賦值 ,而在蘭色部分使用該指針。但在 Get_Config_Table函數(shù)中有可能失敗返回而不給該指針賦值。因此,以后使用的可能是一個(gè)非法指針。 指針的使用是非常靈活的,同時(shí)也存在危險(xiǎn)性,必須小心使用。指針使用的危險(xiǎn)性舉世共知。在新的編程思想中,指針基本上被禁止使用( JAVA中就是這樣),至少也是被限制使用。而在我們交換機(jī)的程序中大量使用指針,并且有增無減。 防止指針 /數(shù)組操作越界 【案例 】 在香港項(xiàng) 目測(cè)試中,發(fā)現(xiàn) ISDN話機(jī)撥新業(yè)務(wù)號(hào)碼時(shí),若一位一位的撥至 18位,不會(huì)有問題。但若先撥完號(hào)碼再成組發(fā)送,會(huì)導(dǎo)致 MPU死機(jī)。 處理過程: 查錯(cuò)過程很簡(jiǎn)單,按呼叫處理的過程檢查代碼,發(fā)現(xiàn)某一處的判斷有誤,本應(yīng)為小于 18的判斷,寫成了小于等于 18。 結(jié) 論: 代碼編寫有誤。 思考與啟示: 極限測(cè)試必須注意,測(cè)試前應(yīng)對(duì)某項(xiàng)設(shè)計(jì)的極限做好充分測(cè)試規(guī)劃。 測(cè)試極限時(shí)還要注意多種業(yè)務(wù)接入點(diǎn),本例為 ISDN。對(duì) 于交換機(jī)來說,任何一種業(yè)務(wù)都要分別在模擬話機(jī)、 ISDN話機(jī)、 V5話機(jī)、多種形式的話務(wù)臺(tái)上做測(cè)試。對(duì)于中繼的業(yè)務(wù),則要充分考慮各種信令: TUP、 ISUP、 PRA、NO V5等等。 【案例 】 對(duì)某交換類進(jìn)行計(jì)費(fèi)測(cè)試,字冠 011對(duì)應(yīng) 1號(hào)路由、 1號(hào)子路由,有 4個(gè)中繼群11,12,13,14(都屬于 1模塊 ),前后兩個(gè)群分別構(gòu)成自環(huán)。其中 11,13群向?yàn)槌鲋欣^ ,12,14群向?yàn)槿胫欣^,對(duì)這四個(gè)群分別進(jìn)行計(jì)費(fèi)設(shè)置,對(duì)出入中繼都計(jì)費(fèi)。電話 60640001撥打 01160010001兩次,使四個(gè)群都有機(jī)會(huì)被計(jì) 費(fèi),取話單后瀏覽話單發(fā)現(xiàn)對(duì) 11群計(jì)費(fèi)計(jì)次表話單出中繼群號(hào)不正確,其它群的計(jì)次表中出中繼群號(hào)正常。 處理過程: 與開發(fā)人員在測(cè)試組環(huán)境多次重復(fù)以上步驟,發(fā)現(xiàn) 11群的計(jì)次表話單有時(shí)正常,有時(shí)其出中繼群號(hào)就為一個(gè)隨機(jī)值,發(fā)生異常的頻率比較高。為什么其它群的話單正常,唯獨(dú) 11群不正常呢? 11群是四個(gè)群中最小的群,其中繼計(jì)次表位于緩沖區(qū)的首位,打完電話后查詢內(nèi)存發(fā)現(xiàn)出中繼群號(hào)在內(nèi)存中是正確的,取完話單后再查就不正確了。 結(jié) 論: 話單池的一個(gè)備份指針 Pool_head_1和中繼計(jì)次表的頭指針重合,影響到第一個(gè)中繼計(jì)次表的計(jì)費(fèi)。 思考與啟示: 隨機(jī)值的背后往往隱藏著指針問題,兩塊內(nèi)存緩沖區(qū)的交界處比較容易出現(xiàn)問題,在編程時(shí)是應(yīng)該注意的地方。 【案例 】 【正 文】 在接入網(wǎng)產(chǎn)品 A測(cè)試中,在內(nèi)存數(shù)據(jù)庫正常的情況下的各種數(shù)據(jù)庫方面的操作都是正常的。為了進(jìn)行數(shù)據(jù)庫異常測(cè)試,于是將數(shù)據(jù)庫內(nèi)容人為地破壞了。發(fā)現(xiàn)在對(duì)數(shù)據(jù)庫進(jìn)行比較操作時(shí),出現(xiàn)程序跑死了現(xiàn)象。 經(jīng)過跟蹤調(diào)試發(fā)現(xiàn)問題出現(xiàn)在如下一段代碼中 : 1 for(i=0。 ipSysHeaddbf_count。 i++) 2 { 3 pDBFat = (_NM_DBFAT_STRUC *)(NVDB_BASE + DBFAT_OFFSET + i*DBFAT_LEN)。 4 if(fat_check(pDBFat) != 0) 5 { 6 pSysHeadsystem_flag = 0。 7 head_sum()。 8 continue。 9 } 10 if(strlen(dbfdbf_name) != 0 amp。amp。 strncmp(dbfdbf_name, pDBFatdbf_name, strlen(dbfdbf_name)) == 0) 11 { 12 dbf_ptr1 = (_UC *)pDBFatdbf_head。 13 filesize = pDBFatdbf_fsize。 14 break。 15 } 16 } 在測(cè)試時(shí)發(fā)現(xiàn)程序死在循環(huán)之中,得到的錯(cuò)誤記錄是 Bus Error(總線出錯(cuò)),由此可以說明出現(xiàn)了內(nèi)存操作異常。 經(jīng)過跟蹤變量值發(fā)現(xiàn)循環(huán)變量 i的閥值 pSysHeaddbf_count的數(shù)值為0xFFFFFFFF,該值是從被破壞的內(nèi)存數(shù)據(jù)庫中獲取的,正常情況下該值小于 127。而 pDBFat是數(shù)據(jù)庫的起始地址,如果 pSysHeaddbf_count值異常過大,將導(dǎo)致pDBFat值超過最大內(nèi)存地址值,隨后進(jìn)行的內(nèi)存操作將 導(dǎo)致內(nèi)存操作越界錯(cuò)誤,因而在測(cè)試過程中數(shù)據(jù)庫破壞后就出現(xiàn)了主機(jī)死機(jī)的現(xiàn)象。 上面的問題解決起來很容易,只需在第一行代碼中增加一個(gè)判斷條件即可,如下: for(i=0。 ipSysHeaddbf_coun amp。amp。 i MAX_DB_NUM。 i++) // MAX_DB_NUM=127 這樣就保證了循環(huán)變量 i的值在正常范圍內(nèi),從而避免了對(duì)指針 pDBFat進(jìn)行內(nèi)存越界的操作。 從上面的測(cè)試過程中,我們可以看到:如此嚴(yán)重的問題,僅僅是一個(gè)簡(jiǎn)單的錯(cuò)誤引起的。實(shí)際上,系統(tǒng)的不穩(wěn)定往 往是由這些看似很簡(jiǎn)單的小錯(cuò)誤導(dǎo)致的。這個(gè)問題給我們教訓(xùn)的是:在直接對(duì)內(nèi)存地址進(jìn)行操作時(shí),一定要保證其值的合法性,否則容易引起內(nèi)存操作越界,給系統(tǒng)的穩(wěn)定性帶來潛在的威脅。 【案例 】 近日在 CDB并行測(cè)試中發(fā)現(xiàn)一個(gè)問題:我們需要的小區(qū)負(fù)荷話統(tǒng)結(jié)果總是為零,開始還以為小區(qū)負(fù)荷太小,于是加大短消息下發(fā)數(shù)量,但還為零,于是在程序中加入測(cè)試代碼,把收到的數(shù)據(jù)在 BAM上打印出來 , 結(jié)果打印出來的數(shù)據(jù)正常 ,不可能為零 ,仔細(xì)查看相關(guān)代碼 ,問題只可能在指針移位上有問題 ,果然在函數(shù)中發(fā)現(xiàn)一處比較隱蔽的錯(cuò)誤。 /* 功能 :一個(gè) BM模塊內(nèi)所有小區(qū) CDB側(cè)廣播消息忙閑情況 */ /*************************************************************/ void Cell_CBCH_Load_Static(struct MsgCB FAR *pMsg) { 。 memcpy((_UC *)amp。tmp_msg,pMsg,sizeof(tmp_msg))。 pMsg=pMsg+sizeof(tmp_msg)。//sizeof(tmp_msg)=10。本意是想移動(dòng) 10個(gè)字節(jié) ,可是實(shí)際上指針移動(dòng)了 10*sizeof(struct MsgCB)個(gè)字節(jié) 。 CellNum=。 。 } 1 所以結(jié)構(gòu)指針傳入函數(shù)后,如要進(jìn)行指針移動(dòng)操作,最好先將其轉(zhuǎn)化為_UC型再說??傊羔槻僮饕⌒臑樯稀? 避免指針的非法引用 【案例 】 【正
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1