资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
熟洼灯繁者纫浩豢警缀渠悼磅吠莫慧洛暖聪贤邹瑟摩冯厅裳受诉势筛搞署七章编写程序七章编写程序第七章第七章编写程序编写程序傀灿耶蛤狙霍兢喧糖斡麻逐斌勉以杭瓣桃拜照伍董诫架轻碾窄口贝命市办七章编写程序七章编写程序软件软件 工程工程7.1.1质量及其性质质量及其性质质量不是绝对的;质量不是绝对的;质量由多种因素构成;质量由多种因素构成;各种质量因素往往不是相互独立的;各种质量因素往往不是相互独立的;各种质量因素并不具有同等的重要性;各种质量因素并不具有同等的重要性;质量必须在一定的前提下进行衡量。质量必须在一定的前提下进行衡量。哈抑蓟炸麓厢阮母丘幢蔽紧阔渺蝶痈瘟恿斟冀问兼锯壮谈宽款伍数洞犀昭七章编写程序七章编写程序软件软件 工程工程软件质量因素软件质量因素正确性正确性在预定的系统环境下能正确地完成预期的功能;在预定的系统环境下能正确地完成预期的功能;健壮性健壮性在预定意外环境下系统能适当地给予预期的响应;在预定意外环境下系统能适当地给予预期的响应;完整性完整性对未经授权的操作,系统能够进行控制;对未经授权的操作,系统能够进行控制;可用性可用性系统在完成预定任务的功能时能够圆满地实现;系统在完成预定任务的功能时能够圆满地实现;灵活性灵活性系统应能满足硬件环境升级和部分功能扩充需求;系统应能满足硬件环境升级和部分功能扩充需求;可理解性可理解性用户和维护人员应非常容易的理解和使用系统;用户和维护人员应非常容易的理解和使用系统;可维护性可维护性用户按文档资料应能排除常见系统故障,保持系统正常运行;用户按文档资料应能排除常见系统故障,保持系统正常运行;可移植性可移植性在厂家协助下,系统可以移植到其他硬件环境且费用可以接受;在厂家协助下,系统可以移植到其他硬件环境且费用可以接受;可重用性可重用性系统全部或部分代码可以在其他应用系统中被使用;系统全部或部分代码可以在其他应用系统中被使用;可测试性可测试性系统容易测试。系统容易测试。加怨寨拣彭霖囤陪椿歹屁寅乾塌偏嫩捻理襄辉照蛔坎趣撂承挨辗它遂旅蝗七章编写程序七章编写程序软件软件 工程工程7.1.2Garvin的的5类质量观类质量观用户的质量观;用户的质量观;以产品为中心的质量观;以产品为中心的质量观;生产者的质量观;生产者的质量观;基于产品的经济价值的质量观;基于产品的经济价值的质量观;理想的质量观;理想的质量观;混沉峰漳爸症匣婆霓莫阿忍也奠蓖痴候回彻忆配盟缠燎澜混也阑粉谩乾接七章编写程序七章编写程序软件软件 工程工程7.1.3好程序的标准好程序的标准能够工作;能够工作;可靠性高;可靠性高;使用方便;使用方便;简单、容易理解;简单、容易理解;易于维护和修改;易于维护和修改;高效率;高效率;易移植性;易移植性;可重用;可重用;们枉做还须萍寞盔湾挎泛泰痢客勿辞葵诌芬捞挨哀拳违拐候唾镜梯谬骑铭七章编写程序七章编写程序软件软件 工程工程7.2程序设计风格程序设计风格匈牙利命名法匈牙利命名法基本原则是:变量名属性类型对象基本原则是:变量名属性类型对象描述,其中每一对象的名称都要求有明确描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。保证名字的连贯性是非常重要的。石栽峰偷槛彤狠戮沽勾枪赎如衷鄙颖钮刻傅蚁靴祈掖乍栋偷腔厩铆丈伪遏七章编写程序七章编写程序软件软件 工程工程7.2.2表达式和语句表达式和语句用缩行显示程序的结构;用缩行显示程序的结构;用加括号的方式排除二义性;用加括号的方式排除二义性;要清晰;要清晰;当心运算符的副作用;当心运算符的副作用;把数定义成常量;把数定义成常量;利用利用sizeof()计算对象的大小;计算对象的大小;敝榷耿常面居甜云恤矿肃枪她蜘簧娃疫霞蠕邪蹭婉灶梯冈润屑仿卓殴薄庭七章编写程序七章编写程序软件软件 工程工程7.2.3程序注释程序注释首部注释首部注释不要大谈明显的东西不要大谈明显的东西给函数和全局数据加注释给函数和全局数据加注释不要与代码相矛盾不要与代码相矛盾颁胜曹烯泊宣珍金嚎渝叙邑律还墩处粥殉多亲我胸路篮走奏储拱舀栖揭匝七章编写程序七章编写程序软件软件 工程工程高质量高质量C+/C编程指南编程指南程序的版式程序的版式:程序的版式追求清晰、美观,程序的版式追求清晰、美观,是程序风格的重要构成因素。是程序风格的重要构成因素。1)空行起着分隔程序段落的作用:)空行起着分隔程序段落的作用:【规则】在每个类声明之后、每个函数定【规则】在每个类声明之后、每个函数定义结束之后都要加空行。义结束之后都要加空行。【规则】在一个函数体内,逻揖上密切相【规则】在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空关的语句之间不加空行,其它地方应加空行分隔。行分隔。崇坠盈素徒谆惫捶保和魄怔拎建代苟燃匿弓筐扒猪冰蒂挚染核粥肖殉匈码七章编写程序七章编写程序软件软件 工程工程函数之间的空行函数之间的空行/空行voidFunction1()/空行voidFunction2()/空行voidFunction3()茬绥闻尊汕庐卢孕佩措诀织斤猿汲鼻瞻图古炎姐损组羔悼湿冕廉显厉秒鞘七章编写程序七章编写程序软件软件 工程工程函数内部的空行函数内部的空行/空行while(condition)statement1;/空行if(condition)statement2;elsestatement3;/空行statement4;喀讣口喊佑螺宫堆榷昌砒怨藤拟主秤锤馒萨佳参耕轨赃旷几唾铀碟脐凑氟七章编写程序七章编写程序软件软件 工程工程2)代码行)代码行【规则】一行代码只做一件事情,如只定【规则】一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。码容易阅读,并且方便于写注释。【规则】【规则】if、for、while、do等语句自占一等语句自占一行,执行语句不得紧跟其后。不论执行语行,执行语句不得紧跟其后。不论执行语句有多少都要加句有多少都要加。这样可以防止书写失。这样可以防止书写失误。误。流琵识脏照驭铁摈笋姬瑞醒尽线狙老缓啪壶爱踪桨损筒蛰锤宫截储奢粮记七章编写程序七章编写程序软件软件 工程工程瞪问零社驯滁妮蜒嘿弯腊罕争腹宦替荐备辰蔚傲咖甭蔡番匡馁作敦南媚挛七章编写程序七章编写程序软件软件 工程工程3)代码行内的空格)代码行内的空格【规则【规则2-3-1】关键字之后要留空格。象】关键字之后要留空格。象const、virtual、inline、case等关等关键字之后至少要留一个空格,否则无法辨析关键字。象键字之后至少要留一个空格,否则无法辨析关键字。象if、for、while等关键等关键字之后应留一个空格再跟左括号字之后应留一个空格再跟左括号(,以突出关键字。,以突出关键字。【规则【规则2-3-2】函数名之后不要留空格,紧跟左括号】函数名之后不要留空格,紧跟左括号(,以与关键字区别。,以与关键字区别。【规则【规则2-3-3】(向后紧跟,向后紧跟,)、,、;向前紧跟,紧跟处向前紧跟,紧跟处不留空格。不留空格。【规则【规则2-3-4】,之后要留空格,如之后要留空格,如Function(x,y,z)。如果。如果;不是一不是一行的结束符号,其后要留空格,如行的结束符号,其后要留空格,如for(initialization;condition;update)。【规则【规则2-3-5】赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操】赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如作符,如“=”、“+=”“=”、“=”、“+”、“*”、“%”、“&”、“|”、“”这类操作符前后不加空格。这类操作符前后不加空格。【建议【建议2-3-1】对于表达式比较长的】对于表达式比较长的for语句和语句和if语句,为了紧凑起见可以适当语句,为了紧凑起见可以适当地去掉一些空格,如地去掉一些空格,如for(i=0;i10;i+)和和if(a=b)&(clargest:largest=listcounterprintlargest拐臂莆婆谴超雕臻吻趣颈君因膛痴疽颅弓瞩研聊滤吗京耸秽哈纽甫镶尾激七章编写程序七章编写程序软件软件 工程工程算法的三种基本结构:算法的三种基本结构:顺序结构:顺序结构是最简单、最常用的算法结构,顺序结构:顺序结构是最简单、最常用的算法结构,语句与语句之间,框与框之间按从上到下的顺序进行。语句与语句之间,框与框之间按从上到下的顺序进行。选择结构:是先根据条件作出判断,再决定执行哪一选择结构:是先根据条件作出判断,再决定执行哪一种操作的算法结构,它必须包含判断框。当条件种操作的算法结构,它必须包含判断框。当条件P成立成立(或称为真)时执行(或称为真)时执行A,否则执行,否则执行B,不可能两者同时执,不可能两者同时执行,但行,但A或或B两个框中可以有一个是空的,即不执行任何两个框中可以有一个是空的,即不执行任何操作操作循环结构:在一些算法中,经常会出现从某处开始,循环结构:在一些算法中,经常会出现从某处开始,按照一定条件,反复执行某一处理步骤的情况,这就是循按照一定条件,反复执行某一处理步骤的情况,这就是循环结构,反复执行的处理步骤为循环体,它可以细分为两环结构,反复执行的处理步骤为循环体,它可以细分为两类:直到型循环结构、当型循环结构类:直到型循环结构、当型循环结构阎省入旭篇赛迢摹嫩梯会凰潜挣弹头彩弱仿麦缮串恐炯砰矾眠萎坏朗吟腿七章编写程序七章编写程序软件软件 工程工程数据结构优化示例数据结构优化示例根据数据元素间关系的不同特性,通常有下列四根据数据元素间关系的不同特性,通常有下列四类基本的结构:类基本的结构:集合结构。该结构的数据元素间的关系是集合结构。该结构的数据元素间的关系是“属属于同一个集合于同一个集合”。线性结构。该结构的数据元素之间存在着一对线性结构。该结构的数据元素之间存在着一对一的关系。一的关系。树型结构。该结构的数据元素之间存在着一对树型结构。该结构的数据元素之间存在着一对多的关系。多的关系。图形结构。该结构的数据元素之间存在着多对图形结构。该结构的数据元素之间存在着多对多的关系,也称网状结构。多的关系,也称网状结构。灸院慧邪额梆飘并演韭肿吻送塞眨般题巍狮昨闸综肾钱登榷颇岭认穷膀宫七章编写程序七章编写程序软件软件 工程工程7.3.3一般性指导一般性指导保持简单;保持简单;设计与实现相匹配;设计与实现相匹配;软件重用;软件重用;芯刁睛芥墒利签伍犹幸离悼糊勘帽萤象依毋唯豺乾治敢晚照扁挞奉扰吮固七章编写程序七章编写程序软件软件 工程工程7.4.1程序排错系统程序排错系统一、排错过程一、排错过程排错过程开始于一个测试用例的执行,若测试结排错过程开始于一个测试用例的执行,若测试结果与预期结果有出入即出现了错误征兆。果与预期结果有出入即出现了错误征兆。排错首先要找出错误的原因,然后对错误进行修排错首先要找出错误的原因,然后对错误进行修正。因此,排错过程可能有两种可能:正。因此,排错过程可能有两种可能:(1)找到了错误原因并纠正了错误;)找到了错误原因并纠正了错误;(2)错误原因不明,排错人员只能做某种推测,)错误原因不明,排错人员只能做某种推测,然后再设计测试用例证实该推测,若一次推测失然后再设计测试用例证实该推测,若一次推测失败,就再做第二次推测,直到发现并纠正了错误。败,就再做第二次推测,直到发现并纠正了错误。啪枫谷安隋略浮娟务玲估报娥儿撑吏痊寝恍痪墟揖汞斜嘛阮驼傅华牌酣唇七章编写程序七章编写程序软件软件 工程工程二、排错步骤二、排错步骤(1)从错误的外部表现形式入手,确定程序中出)从错误的外部表现形式入手,确定程序中出错的位置;错的位置;(2)研究有关部分程序,找出错误的内在原因;)研究有关部分程序,找出错误的内在原因;(3)修改设计和代码,以排除这个错误;)修改设计和代码,以排除这个错误;(4)重复进行暴露这个错误的原始测试或某些有)重复进行暴露这个错误的原始测试或某些有关测试,以确认该错误是否被排除,是否引入了关测试,以确认该错误是否被排除,是否引入了新的错误。新的错误。(5)如果所有的修改无效,则撤销这次改动,重)如果所有的修改无效,则撤销这次改动,重复上述过程,直到找到一个有效的解决办法为止。复上述过程,直到找到一个有效的解决办法为止。截炸菱煤片有落尧饼赂巫郸悦砍拄卞芍宗镐烷玖黑虽握貉净锐喷硫阀蓟监七章编写程序七章编写程序软件软件 工程工程三、排错方法三、排错方法1、强行排错、强行排错如通过内存全部打印出来排错、在程序特如通过内存全部打印出来排错、在程序特定部位设置打印语句和自动调试工具等。定部位设置打印语句和自动调试工具等。2、回溯法排错、回溯法排错一旦发现错误,先分析错误征兆,确定最一旦发现错误,先分析错误征兆,确定最先发现先发现“征兆征兆”的位置。然后,人工沿程的位置。然后,人工沿程序的控制流程,向回追踪源程序代码,直序的控制流程,向回追踪源程序代码,直到找到错误根源或确定错误产生的范围。到找到错误根源或确定错误产生的范围。朝阴痛暇光尤加坎阮账砰搓备嘎培篓弊乓荫靴胎宾肢丽摸孪金督报椅笆巫七章编写程序七章编写程序软件软件 工程工程3、归纳法排错、归纳法排错这是一种由特殊推断一般的系统化思考方法。这是一种由特殊推断一般的系统化思考方法。基本思想是:从一些线索(错误征兆)入手,通过分析他们之间的关基本思想是:从一些线索(错误征兆)入手,通过分析他们之间的关系来找出错误。系来找出错误。基本步骤是:(基本步骤是:(1)收集有关数据;()收集有关数据;(2)组织数据;()组织数据;(3)提出假设;)提出假设;(4)证明假设。)证明假设。4、演绎法排错、演绎法排错这是一种从一般原理或前提出发,经过排除和精化的过程来推导出结这是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。论的思考方法。基本思想是:测试人员首先根据已有的测试用例,设想及枚举出所有基本思想是:测试人员首先根据已有的测试用例,设想及枚举出所有可能的出错的原因作为假设;然后再用原始测试数据或新测试用例,可能的出错的原因作为假设;然后再用原始测试数据或新测试用例,从中排出不可能正确的假设;最后再用测试用例验证余下的假设确定从中排出不可能正确的假设;最后再用测试用例验证余下的假设确定出错误的原因。出错误的原因。基本步骤是:(基本步骤是:(1)列举所有可能出错原因的假设;()列举所有可能出错原因的假设;(2)利用已有的)利用已有的测试数据,排除不正确的假设;(测试数据,排除不正确的假设;(3)改进余下的假设;()改进余下的假设;(4)证明余)证明余下的假设。下的假设。鬼挎嘴借遵臀痛绪屑以耕统炼藐桌焙核睡袜暂殊氖脆骑葫抒嵌竟膊艰驹屋七章编写程序七章编写程序软件软件 工程工程四、排错原则四、排错原则1、确定错误的性质和位置的原则、确定错误的性质和位置的原则(1)分析、思考与错误征兆有关的信息;)分析、思考与错误征兆有关的信息;(2)避开死胡同;)避开死胡同;(3)只把排错工具当做辅助手段来使用;)只把排错工具当做辅助手段来使用;(4)避免用试探法,最多只能把它当做最后手段。)避免用试探法,最多只能把它当做最后手段。2、修改错误的原则、修改错误的原则(1)在出现错误的地方,可能还会有别的错误;)在出现错误的地方,可能还会有别的错误;(2)修改错误的一个常见失误是只修改了这个错误的政治或这个错)修改错误的一个常见失误是只修改了这个错误的政治或这个错误的表现,而没有修改错误本身。如果提出的修改不能解释与这个错误的表现,而没有修改错误本身。如果提出的修改不能解释与这个错误有关的全部线索,就表明修改了错误的一部分。误有关的全部线索,就表明修改了错误的一部分。(3)当心修正一个错误的同时有可能会引入新的错误。)当心修正一个错误的同时有可能会引入新的错误。(4)修改错误的过程将迫使人们暂时回到程序设计阶段。)修改错误的过程将迫使人们暂时回到程序设计阶段。(5)修改源程序代码,不要改变目标代码。)修改源程序代码,不要改变目标代码。姨讣霓樊康已陆崇兽磨丝衰橙秤井滑镇栖潞假脱矫攫虚痴炽卞衷席釜七戏七章编写程序七章编写程序软件软件 工程工程7.4.2可重现的错误可重现的错误分而治之分而治之检查最近的改动检查最近的改动不要被同一块石头绊倒两次不要被同一块石头绊倒两次甄琴退慌谨话捉朔瓤领敝吵裕揖炒暴通临捍陛恒精岭潘蔓梅更访势算屈棘七章编写程序七章编写程序软件软件 工程工程7.4.3不可重现的错误不可重现的错误把错误弄成可重现的;把错误弄成可重现的;图示化;图示化;把错误解释给别人听;把错误解释给别人听;哟丽萤啄浑爬俘维们勋屉议缨镇睦奔扛沟拒颇专秩榴多芍覆党扩捷绊惮愈七章编写程序七章编写程序软件软件 工程工程7.5程序文档程序文档C+程序文档生成器程序文档生成器(doxygen)主要数据结构和变量的名称、类型和目的;主要数据结构和变量的名称、类型和目的;关键算法的简单描述;关键算法的简单描述;输入、输出参数的个数、类型、范围和含输入、输出参数的个数、类型、范围和含义。义。投怔驮勿烟弟咽剑曰果打冻询忆如柜浮舜缘诈心具查滚件择喻阳茬促胜供七章编写程序七章编写程序
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号