- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四讲 软件可靠性与程序设计风格 本讲目的: 了解软件可靠性的基本概念 认识软件错误及其解决办法 养成良好的程序设计风格 1. 什么是软件可靠性 软件可靠性 在特定环境特定时间内程序不是摆地运行的概率 信息安全可靠性:访问控制、加密 程序运行可靠性:编程风格、测试 软件错误统计 功能错:占整个软件错误27%,是需求分析设计不完整而引起的 系统错:占整个软件错误16%,是总体设计错误而引起的 数据错:占整个软件错误10%,由编码错误引起的 编码错:占整个软件错误4%,程序员编码错误引起的 其它错:占整个软件错误4%,由文档错和硬件错所引起的 软件错误分类 词法错误:打字错误 语法错误:编译错误 语义错误:连接错误 逻辑错误:运行错误 错误越“高级”,解决代价越高昂 非常难以发现的错误常常是小错误 2. 软件测试 评审和测试是发现错误的主要途径 软件测试就是为了尽可能多地发现错误和缺陷 软件测试不能证明软件没有错误 测试用例:测试数据+预期结果 不仅设计合法的测试用例,也要设计非法的和非预期的测试用例 用少量测试用例发现尽可能多的错误 测试用例、测试计划、测试统计都应保留 应避免程序员测试自己的程序 彻底测试整个软件 错误群集:若发现错误数目多,则残存错误数目也比较多 单元测试 模块接口测试 局部数据结构测试 路径测试 错误处理测试 边界测试:±1 驱动模块:相当于所测模块的主程序。它接收不同测试用例的测试数据,并把这些数据传给所测模块,最后输出实测结果 桩模块:也称存根模块、连接模块。用以代替所测模块调用的子模块。桩模块不需要具备子模块所有功能,但也不能什么事情都不做,要模拟实际子模块的功能 3. 软件纠错 软件测试:尽可能多地暴露程序中的错误 软件调试:发现错误的最终目的是为了改正错误 调试方法 输出存储器内容 适当插入打印语句 使用专门的调试工具:设置断点 调试策略 试探法:分析错误征兆,猜想故障的大致位置 回溯法:人工沿程序的控制流往回追踪程序代码,直到找出错误的根源或确定故障范围为止 归纳法:收集、整理数据,发现规律,提出假设,证明假设 演绎法:从一般原理出发,经过删除和精化推导出结论 4. 编程风格 高效+技巧?安全+可靠 时间、空间效率?可用性、可维护性、可移植性 良好的编程风格可以减少软件错误 程序设计风格 源程序文档化:标识符名,注释,视觉组织 数据说明:变量名,排列顺序 语句构造:易读效率,避免复杂的语句 输入和输出:校验,允许缺省值 ,输出加注释 效率:追求效率要建立在不损害程序可读性或可靠性基础之上。要先使程序正确、再提高效率,要先使程序清晰,再提高程序效率 命名注意事项 坚持使用英语命名,不用汉语拼音及缩写 名称最佳长度:介于MaximumNumberOfPointsSince1896和x之间 名称的作用域:短名称总是不好么? 反义词可以保持名称的连续性: add/remove begin/end create/destroy insert/delete first/last get/release increment/decrement put/get up/down lock/unlock min/max next/previous old/new open/close show/hide source/destination start/stop 循环变量:i/j/k 状态变量:Flag/StatusFlag/PrintFlag/DataReady/Type 临时变量:temp/t/x 逻辑变量:Done/Error/Found/Success 常量:PI/CYCLES_NEEDED 注释:源代码中的文档 代码的重复:没有附加信息 代码的解释:应当改进代码 代码中的标记:开发记录提示,后续的工作 代码的总结:增加可读性 代码意图的描述:问题一级的注释 要注释还是不要注释 注释一定要准确 不精确的(错误的)注释比没有注释更糟 * * 组装测试:也叫做集成测试或联合测试,发现与接口相联系的问题 数据穿过接口时可能会丢失 某个模块可能会破坏另一个模块的功能 各子模块组合起来可能达不到预期要求的主功能 全局数据结构可能出问题 单个模块可以接受的误差,装配以后可能会放大(或积累)到不能接受的程度 确认测试:又称验收测试 验证软件的功能和性能及其他特性是否与用户的要求一致 软件需求规格说明书既是软件开发依据,也是软件验收标准 黑盒测试:又称功能测试,完全不考虑程序的内部结构和处理过程 等价类划分:把所有可能的输入数据(有效的和无效的)划分成若干个等价类 ,从每个等价类中只取一组数据作为测试
文档评论(0)