软件编程规范培训实例与练习
软件编程规范培训实例与练习详细内容
软件编程规范培训实例与练习
软件编程规范培训实例与练习 o 问题分类 1 逻辑类问题(A类)-指设计、编码中出现的计算正确性和一致性、程序逻辑控制等方面 出现的问题,在系统中起关键作用,将导致软件死机、功能正常实现等严重问题; 接口类问题(B类)-指设计、编码中出现的函数和环境、其他函数、全局/局部变量或 数据变量之间的数据/控制传输不匹配的问题,在系统中起重要作用,将导致模块间配合 失效等严重问题; 维护类问题(C类)-指设计、编码中出现的对软件系统的维护方便程度造成影响的问题 ,在系统中不起关键作用,但对系统后期维护造成不便或导致维护费用上升; 可测试性问题(D类)-指设计、编码中因考虑不周而导致后期系统可测试性差的问题。 o 处罚办法 问题发生率: P=D/S D=DA+0.5DB+0.25DC 其中: P -问题发生率 D -1个季度内错误总数 DA -1个季度内A类错误总数 DB -1个季度内B类错误总数 DC -1个季度内C类错误总数 S -1个季度内收到问题报告单总数 1)当D≥3时,如果P≥3%,将进行警告处理,并予以公告; 2)当D≥5时,如果P≥5%,将进行罚款处理,并予以公告。 目 录 |一、逻辑类代码问题 |第5页 | |1、变量/指针在使用前就必须初始化 |第5页 | |【案例1.1.1】 |第5页 | |2、防止指针/数组操作越界 |第5页 | |【案例1.2.1】 |第5页 | |【案例1.2.2】 |第6页 | |【案例1.2.3】 |第7页 | |【案例1.2.4】 |第8页 | |3、避免指针的非法引用 |第9页 | |【案例1.3.1】 |第9页 | |4、变量类型定义错误 |第10页 | |【案例1.4.1】 |第10页 | |5、正确使用逻辑与&&、屏蔽&操作符 |第17页 | |【案例1.5.1】 |第17页 | |6、注意数据类型的匹配 |第18页 | |【案例1.6.1】 |第18页 | |【案例1.6.2】 |第18页 | |7、用于控制条件转移的表达式及取值范围是否书写正确 |第20页 | |【案例1.7.1】 |第20页 | |【案例1.7.2】 |第21页 | |【案例1.7.3】 |第22页 | |8、条件分支处理是否有遗漏 |第24页 | |【案例1.8.1】 |第24页 | |9、引用已释放的资源 |第26页 | |【案例1.9.1】 |第26页 | |10、分配资源是否已正确释放 |第28页 | |【案例1.10.1】 |第28页 | |【案例1.10.2】 |第29页 | |【案例1.10.3】 |第30页 | |【案例1.10.4】 |第32页 | |【案例1.10.5】 |第33页 | |【案例1.10.6】 |第35页 | |【案例1.10.7】 |第38页 | |11、防止资源的重复释放 |第39页 | |【案例1.11.1】 |第39页 | |12、公共资源的互斥性和竞用性 |第40页 | |【案例1.12.1】 |第40页 | |【案例1.12.2】 |第40页 | |二、接口类代码问题 |第43页 | |1、对函数参数进行有效性检查 |第43页 | |【案例2.1.1】 |第43页 | |【案例2.1.2】 |第43页 | |【案例2.1.3】 |第44页 | |【案例2.1.4】 |第46页 | |【案例2.1.5】 |第47页 | |【案例2.1.6】 |第48页 | |2、注意多出口函数的处理 |第49页 | |【案例2.2.1】 |第49页 | |三、维护类代码问题 |第51页 | |1、 统一枚举类型的使用 |第51页 | |【案例3.1.1】 |第51页 | |2、 注释量至少占代码总量的20% |第51页 | |【案例3.2.1】对XXX产品BAM某版本部分代码注释量的统计 |第51页 | |四、产品兼容性问题 |第52页 | |1、系统配置、命令方式 |第52页 | |【案例4.1.1】 |第52页 | |【案例4.1.2】 |第53页 | |2、设备对接 |第54页 | |【案例4.2.1】 |第54页 | |3、其他 |第55页 | |【案例4.3.1】 |第55页 | |五、版本控制问题 |第58页 | |1、新老代码中同一全局变量不一致 |第58页 | |【案例5.1.1】 |第58页 | |六、可测试性代码问题 |第59页 | |1、调试信息/打印信息的正确性 |第59页 | |【案例6.1.1】 |第59页 | 一、逻辑类代码问题 1、变量/指针在使用前就必须初始化 【案例1.1.1】 C语言中最大的特色就是指针。指针的使用具有很强的技巧性和灵活性,但同时也带来了 很大的危险性。在XXX的代码中有如下一端对指针的灵活使用: ... ... _UC *puc_card_config_tab; ... ... Get_Config_Table( AMP_CPM_CARD_CONFIG_TABLE, &ul_card_config_num, &puc_card_config_tab, use_which_data_area ); ... ... b_middle_data_ok = generate_trans_middle_data_from_original_data( puc_card_config_tab, Ul_card_config_num) .... ... 其中红色部分巧妙的利用指向指针的指针为指针puc_card_config_tab赋值,而在兰色 部分使用该指针。但在Get_Config_Table函数中有可能失败返回而不给该指针赋值。 因此,以后使用的可能是一个非法指针。 指针的使用是非常灵活的,同时也存在危险性,必须小心使用。指针使用的危险性举 世共知。在新的编程思想中,指针基本上被禁止使用(JAVA中就是这样),至少也是 被限制使用。而在我们交换机的程序中大量使用指针,并且有增无减。 2、防止指针/数组操作越界 【案例1.2.1】 在香港项目测试中,发现ISDN话机拨新业务号码时,若一位一位的拨至18位,不会有问 题。但若先拨完号码再成组发送,会导致MPU死机。 处理过程: 查错过程很简单,按呼叫处理的过程检查代码,发现某一处的判断有误,本应为小于18 的判断,写成了小于等于18。 结 论: 代码编写有误。 思考与启示: 1、极限测试必须注意,测试前应对某项设计的极限做好充分测试规划。 2、测试极限时还要注意多种业务接入点,本例为ISDN。对于交换机来说,任何一种业务 都要分别在模拟话机、ISDN话机、V5话机、多种形式的话务台上做测试。对于中继的业 务,则要充分考虑各种信令:TUP、ISUP、PRA、NO1、V5等等。 【案例1.2.2】 对某交换类进行计费测试,字冠011对应1号路由、1号子路由,有4个中继群11,12,13,1 4(都属于1#模块),前后两个群分别构成自环。其中11,13群向为出中继,12,14群向为入 中继,对这四个群分别进行计费设置,对出入中继都计费。电话60640001拨打01160010 001两次,使四个群都有机会被计费,取话单后浏览话单发现对11群计费计次表话单出中 继群号不正确,其它群的计次表中出中继群号正常。 处理过程: 与开发人员在测试组环境多次重复以上步骤,发现11群的计次表话单有时正常,有时其 出中继群号就为一个随机值,发生异常的频率比较高。为什么其它群的话单正常,唯独 11群不正常呢?11群是四个群中最小的群,其中继计次表位于缓冲区的首位,打完电话 后查询内存发现出中继群号在内存中是正确的,取完话单后再查就不正确了。 结 论: 话单池的一个备份指针Pool_head_1和中继计次表的头指针重合,影响到第一个中继计次 表的计费。 思考与启示: 随机值的背后往往隐藏着指针问题,两块内存缓冲区的交界处比较容易出现问题,在编 程时是应该注意的地方。 【案例1.2.3】 【正 文】 在接入网产品A测试中,在内存数据库正常的情况下的各种数据库方面的操作都是正常的 。为了进行数据库异常测试,于是将数据库内容人为地破坏了。发现在对数据库进行比 较操作时,出现程序跑死了现象。 经过跟踪调试发现问题出现在如下一段代码中: 1 for(i=0; idbf_count; i++) 2 { 3 pDBFat = (_NM_DBFAT_STRUC *)(NVDB_BASE + DBFAT_OFFSET + i*DBFAT_LEN); 4 if(fat_check(pDBFat) != 0) 5 { 6 pSysHead->system_flag = 0; 7 ...
软件编程规范培训实例与练习
软件编程规范培训实例与练习 o 问题分类 1 逻辑类问题(A类)-指设计、编码中出现的计算正确性和一致性、程序逻辑控制等方面 出现的问题,在系统中起关键作用,将导致软件死机、功能正常实现等严重问题; 接口类问题(B类)-指设计、编码中出现的函数和环境、其他函数、全局/局部变量或 数据变量之间的数据/控制传输不匹配的问题,在系统中起重要作用,将导致模块间配合 失效等严重问题; 维护类问题(C类)-指设计、编码中出现的对软件系统的维护方便程度造成影响的问题 ,在系统中不起关键作用,但对系统后期维护造成不便或导致维护费用上升; 可测试性问题(D类)-指设计、编码中因考虑不周而导致后期系统可测试性差的问题。 o 处罚办法 问题发生率: P=D/S D=DA+0.5DB+0.25DC 其中: P -问题发生率 D -1个季度内错误总数 DA -1个季度内A类错误总数 DB -1个季度内B类错误总数 DC -1个季度内C类错误总数 S -1个季度内收到问题报告单总数 1)当D≥3时,如果P≥3%,将进行警告处理,并予以公告; 2)当D≥5时,如果P≥5%,将进行罚款处理,并予以公告。 目 录 |一、逻辑类代码问题 |第5页 | |1、变量/指针在使用前就必须初始化 |第5页 | |【案例1.1.1】 |第5页 | |2、防止指针/数组操作越界 |第5页 | |【案例1.2.1】 |第5页 | |【案例1.2.2】 |第6页 | |【案例1.2.3】 |第7页 | |【案例1.2.4】 |第8页 | |3、避免指针的非法引用 |第9页 | |【案例1.3.1】 |第9页 | |4、变量类型定义错误 |第10页 | |【案例1.4.1】 |第10页 | |5、正确使用逻辑与&&、屏蔽&操作符 |第17页 | |【案例1.5.1】 |第17页 | |6、注意数据类型的匹配 |第18页 | |【案例1.6.1】 |第18页 | |【案例1.6.2】 |第18页 | |7、用于控制条件转移的表达式及取值范围是否书写正确 |第20页 | |【案例1.7.1】 |第20页 | |【案例1.7.2】 |第21页 | |【案例1.7.3】 |第22页 | |8、条件分支处理是否有遗漏 |第24页 | |【案例1.8.1】 |第24页 | |9、引用已释放的资源 |第26页 | |【案例1.9.1】 |第26页 | |10、分配资源是否已正确释放 |第28页 | |【案例1.10.1】 |第28页 | |【案例1.10.2】 |第29页 | |【案例1.10.3】 |第30页 | |【案例1.10.4】 |第32页 | |【案例1.10.5】 |第33页 | |【案例1.10.6】 |第35页 | |【案例1.10.7】 |第38页 | |11、防止资源的重复释放 |第39页 | |【案例1.11.1】 |第39页 | |12、公共资源的互斥性和竞用性 |第40页 | |【案例1.12.1】 |第40页 | |【案例1.12.2】 |第40页 | |二、接口类代码问题 |第43页 | |1、对函数参数进行有效性检查 |第43页 | |【案例2.1.1】 |第43页 | |【案例2.1.2】 |第43页 | |【案例2.1.3】 |第44页 | |【案例2.1.4】 |第46页 | |【案例2.1.5】 |第47页 | |【案例2.1.6】 |第48页 | |2、注意多出口函数的处理 |第49页 | |【案例2.2.1】 |第49页 | |三、维护类代码问题 |第51页 | |1、 统一枚举类型的使用 |第51页 | |【案例3.1.1】 |第51页 | |2、 注释量至少占代码总量的20% |第51页 | |【案例3.2.1】对XXX产品BAM某版本部分代码注释量的统计 |第51页 | |四、产品兼容性问题 |第52页 | |1、系统配置、命令方式 |第52页 | |【案例4.1.1】 |第52页 | |【案例4.1.2】 |第53页 | |2、设备对接 |第54页 | |【案例4.2.1】 |第54页 | |3、其他 |第55页 | |【案例4.3.1】 |第55页 | |五、版本控制问题 |第58页 | |1、新老代码中同一全局变量不一致 |第58页 | |【案例5.1.1】 |第58页 | |六、可测试性代码问题 |第59页 | |1、调试信息/打印信息的正确性 |第59页 | |【案例6.1.1】 |第59页 | 一、逻辑类代码问题 1、变量/指针在使用前就必须初始化 【案例1.1.1】 C语言中最大的特色就是指针。指针的使用具有很强的技巧性和灵活性,但同时也带来了 很大的危险性。在XXX的代码中有如下一端对指针的灵活使用: ... ... _UC *puc_card_config_tab; ... ... Get_Config_Table( AMP_CPM_CARD_CONFIG_TABLE, &ul_card_config_num, &puc_card_config_tab, use_which_data_area ); ... ... b_middle_data_ok = generate_trans_middle_data_from_original_data( puc_card_config_tab, Ul_card_config_num) .... ... 其中红色部分巧妙的利用指向指针的指针为指针puc_card_config_tab赋值,而在兰色 部分使用该指针。但在Get_Config_Table函数中有可能失败返回而不给该指针赋值。 因此,以后使用的可能是一个非法指针。 指针的使用是非常灵活的,同时也存在危险性,必须小心使用。指针使用的危险性举 世共知。在新的编程思想中,指针基本上被禁止使用(JAVA中就是这样),至少也是 被限制使用。而在我们交换机的程序中大量使用指针,并且有增无减。 2、防止指针/数组操作越界 【案例1.2.1】 在香港项目测试中,发现ISDN话机拨新业务号码时,若一位一位的拨至18位,不会有问 题。但若先拨完号码再成组发送,会导致MPU死机。 处理过程: 查错过程很简单,按呼叫处理的过程检查代码,发现某一处的判断有误,本应为小于18 的判断,写成了小于等于18。 结 论: 代码编写有误。 思考与启示: 1、极限测试必须注意,测试前应对某项设计的极限做好充分测试规划。 2、测试极限时还要注意多种业务接入点,本例为ISDN。对于交换机来说,任何一种业务 都要分别在模拟话机、ISDN话机、V5话机、多种形式的话务台上做测试。对于中继的业 务,则要充分考虑各种信令:TUP、ISUP、PRA、NO1、V5等等。 【案例1.2.2】 对某交换类进行计费测试,字冠011对应1号路由、1号子路由,有4个中继群11,12,13,1 4(都属于1#模块),前后两个群分别构成自环。其中11,13群向为出中继,12,14群向为入 中继,对这四个群分别进行计费设置,对出入中继都计费。电话60640001拨打01160010 001两次,使四个群都有机会被计费,取话单后浏览话单发现对11群计费计次表话单出中 继群号不正确,其它群的计次表中出中继群号正常。 处理过程: 与开发人员在测试组环境多次重复以上步骤,发现11群的计次表话单有时正常,有时其 出中继群号就为一个随机值,发生异常的频率比较高。为什么其它群的话单正常,唯独 11群不正常呢?11群是四个群中最小的群,其中继计次表位于缓冲区的首位,打完电话 后查询内存发现出中继群号在内存中是正确的,取完话单后再查就不正确了。 结 论: 话单池的一个备份指针Pool_head_1和中继计次表的头指针重合,影响到第一个中继计次 表的计费。 思考与启示: 随机值的背后往往隐藏着指针问题,两块内存缓冲区的交界处比较容易出现问题,在编 程时是应该注意的地方。 【案例1.2.3】 【正 文】 在接入网产品A测试中,在内存数据库正常的情况下的各种数据库方面的操作都是正常的 。为了进行数据库异常测试,于是将数据库内容人为地破坏了。发现在对数据库进行比 较操作时,出现程序跑死了现象。 经过跟踪调试发现问题出现在如下一段代码中: 1 for(i=0; idbf_count; i++) 2 { 3 pDBFat = (_NM_DBFAT_STRUC *)(NVDB_BASE + DBFAT_OFFSET + i*DBFAT_LEN); 4 if(fat_check(pDBFat) != 0) 5 { 6 pSysHead->system_flag = 0; 7 ...
软件编程规范培训实例与练习
[下载声明]
1.本站的所有资料均为资料作者提供和网友推荐收集整理而来,仅供学习和研究交流使用。如有侵犯到您版权的,请来电指出,本站将立即改正。电话:010-82593357。
2、访问管理资源网的用户必须明白,本站对提供下载的学习资料等不拥有任何权利,版权归该下载资源的合法拥有者所有。
3、本站保证站内提供的所有可下载资源都是按“原样”提供,本站未做过任何改动;但本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。
4、未经本网站的明确许可,任何人不得大量链接本站下载资源;不得复制或仿造本网站。本网站对其自行开发的或和他人共同开发的所有内容、技术手段和服务拥有全部知识产权,任何人不得侵害或破坏,也不得擅自使用。
我要上传资料,请点我!
管理工具分类
ISO认证 课程讲义 管理表格 合同大全 法规条例 营销资料 方案报告 说明标准 管理战略 商业计划书 市场分析 战略经营 策划方案 培训讲义 企业上市 采购物流 电子商务 质量管理 企业名录 生产管理 金融知识 电子书 客户管理 企业文化 报告论文 项目管理 财务资料 固定资产 人力资源 管理制度 工作分析 绩效考核资料 面试招聘 人才测评 岗位管理 职业规划 KPI绩效指标 劳资关系 薪酬激励 人力资源案例 人事表格 考勤管理 人事制度 薪资表格 薪资制度 招聘面试表格 岗位分析 员工管理 薪酬管理 绩效管理 入职指引 薪酬设计 绩效管理 绩效管理培训 绩效管理方案 平衡计分卡 绩效评估 绩效考核表格 人力资源规划 安全管理制度 经营管理制度 组织机构管理 办公总务管理 财务管理制度 质量管理制度 会计管理制度 代理连锁制度 销售管理制度 仓库管理制度 CI管理制度 广告策划制度 工程管理制度 采购管理制度 生产管理制度 进出口制度 考勤管理制度 人事管理制度 员工福利制度 咨询诊断制度 信息管理制度 员工培训制度 办公室制度 人力资源管理 企业培训 绩效考核 其它
精品推荐
- 1C语言难点及分析 350
- 2暗促-酒店玫瑰静悄悄地开 644
- 3终端陈列十五大原则 724
- 4****主营业务发展战略设计 628
- 5中小企业物流发展的对策 713
- 6主顾开拓 761
- 7主动推进的客户服务 571
- 8专业媒体策划与购买 637
- 9中远电视广告CF 738
下载排行
- 1社会保障基础知识(ppt) 16695
- 2安全生产事故案例分析(ppt 16695
- 3行政专员岗位职责 16695
- 4品管部岗位职责与任职要求 16695
- 5员工守则 16695
- 6软件验收报告 16695
- 7问卷调查表(范例) 16695
- 8工资发放明细表 16695
- 9文件签收单 16695


