软件工程导论第五章课件

上传人:我*** 文档编号:144723386 上传时间:2020-09-13 格式:PPT 页数:133 大小:568.50KB
返回 下载 相关 举报
软件工程导论第五章课件_第1页
第1页 / 共133页
软件工程导论第五章课件_第2页
第2页 / 共133页
软件工程导论第五章课件_第3页
第3页 / 共133页
软件工程导论第五章课件_第4页
第4页 / 共133页
软件工程导论第五章课件_第5页
第5页 / 共133页
点击查看更多>>
资源描述

《软件工程导论第五章课件》由会员分享,可在线阅读,更多相关《软件工程导论第五章课件(133页珍藏版)》请在金锄头文库上搜索。

1、软件工程,2020/9/13,2,第五章 结构化实现(编码和测试),本章内容: 第一节 编码 第二节 软件测试基础 第三节 白盒测试技术 第四节 黑盒测试技术 附:主要测试方法练习 第五节 测试策略 第六节 调试,END,2020/9/13,3,第一节 编码,本节内容: 一、相关概念 二、编码阶段的任务 三、程序设计语言的选择 四、编码风格,2020/9/13,4,一、相关概念,所谓编码就是选择一种语言把软件设计阶段的结果翻译成计算机可以理解的源程序 它直接来源于设计,所以,程序的质量主要取决于软件设计的质量 所选编程语言的特点和编码人员的编码风格会对程序的可靠性、可读性、可测试性和可维护性产

2、生影响,2020/9/13,5,二、编码阶段的任务,主要任务: 为每个模块编写程序,将详细设计的结果转换成用某种程序语言表示的计算机能理解的源程序形式 在编程过程中,要把软件详细设计的表达翻译成编程语言的构造,2020/9/13,6,三、程序设计语言的选择,1、程序设计特性 1)心理特性 编程语言是人-机通信的工具,编码过程是一种人的活动。因此,语言的心理特性对通信的质量有重要的影响 软件心理学的作用是在关注机器效率、软件能力和硬件限制的同时,应把注意力集中在诸如使用容易、学习简便、提高可靠性、减少出错率及让用户满意方面,2020/9/13,7,三、程序设计语言的选择,1、程序设计特性 1)心

3、理特性 需要考虑的几个心理特性 一致性:例如,fortran语言中的“( )”用作数组下标的界限符、算术运算优先次序的修改符、子程序的变量界限符等,这种多用途的符号会引起难以觉察的错误 多义性:指程序员的多种理解的错误,如X=sinxlog(x+1),可理解为:X=(sinx)(log(x+1)也可理解为X=sin(xlog(x+1),2020/9/13,8,三、程序设计语言的选择,1、程序设计特性 1)心理特性 需要考虑的几个心理特性 紧凑性:一种面向代码信息量的表示,这个信息量必须由人来记忆: APL语言是一种非常紧凑的编程语言,但很难读懂,Prolog语言也一种非常紧凑的语言 度量紧凑性

4、的语言属性: 该语言支持结构化和逻辑块的程度 所用的关键字和缩写词的类型 数据类型和缺省特性的品种 算术运算和逻辑运算的数量 内部函数的数量,2020/9/13,9,三、程序设计语言的选择,1、程序设计特性 1)心理特性 需要考虑的几个心理特性 局部性:是编程语言的综合特性 当语句可以组合为程序块、结构化构造可直接实现、设计代码和合成代码具有高的模块性的聚合时,局域性就高 语言特性支持或鼓励异常处理时 线性:当遇到一个逻辑运算线性序列时,人就容易理解。外延分支和外延大的循环都违反了处理的线性。结构化构造的直接实现有助于编程语言的线性,2020/9/13,10,三、程序设计语言的选择,1、程序设

5、计特性 2)工程特性 需要考虑的工程特性有: 易转换性 编译效率 可移植性 是否有开发工具 源程序的可维护性 3)技术特性,2020/9/13,11,三、程序设计语言的选择,2、语言的分类 传统的分类方式 基本语言(Fortran Basic Algol Cobol等) 结构化程序语言(Pascal C 等) 专用语言 按发展阶段分 第一代语言 第二代语言 第三代语言,2020/9/13,12,三、程序设计语言的选择,第一代语言 主要特征:面向机器,代表语言是机器语言(使用的是绝对地址码、绝对操作码和存储空间分配)、汇编语言 第二代语言 上世纪50年代-60年代初 主要特征:脱离机器面向算法过

6、程的高级语言 有变量、赋值、子程序、函数调用概念,有少量的基本数据类型,有限的循环套和一般的递归调用等。代表语言:FORTRAN,ALGOL,COBOL,BASIC(第三代语言的基础),2020/9/13,13,三、程序设计语言的选择,第三代语言 也称结构化编程语言,60年代70年代 主要特征:具有很强的过程和数据结构化的能力 可分为三类: 通用高级语言(C、Pascal、Ada美国的三军通用语言) 面向对象高级语言(C+,Objective-C,Smalltalk,Eiffel) 专用语言(LISP、PROLOG、APL和FORTH),2020/9/13,14,三、程序设计语言的选择,第四代

7、语言 70年代以后 主要特征:用户极端友好、声明式、交互式和非过程式的编程语言、高效的程序代码、智能缺省假设、完备的数据库、应用程序生成器。代表语言:FOXPRO、VFP、VC、VB等等 4GL溶入了许多新发展的技术,如,事件驱动、分布式数据共享、多媒体技术,4GL是一个交互式的程序设计环境,2020/9/13,15,三、程序设计语言的选择,3、程序设计语言的选择 通常情况下要考虑的因素 1)系统用户的要求 2)可以使用的编译程序 3)可以得到的软件工具 4)工程规模 5)程序员的知识 6)软件可移植性要求 7)软件的应用领域(看不同实现语言的特性),2020/9/13,16,2020/9/1

8、3,17,四、编码风格,良好的源程序代码应该是逻辑简明清晰、易读易懂,为了做到这一点,应该遵循下述规则: 源程序文档化 数据说明 语句结构 输入输出 效率,返回至“本章内容”,2020/9/13,18,源程序文档化,源程序的文档化包括如下内容: 1、恰当的标识符 2、适当的注解语句 3、程序的组织视觉,返回至“编码风格”,2020/9/13,19,数据说明,虽然在设计期间已经确定了数据结构的组织和复杂程度,然而数据说明的风格却是在写程序时确定的 为了使数据更容易理解和维护,遵循一些比较简单的原则是必要的: 数据说明的次序应当规范化 说明语句中变量安排有序化 使用注释说明复杂数据结构 例如: P

9、ascal中用户自定义的数据类型,都应当在注释中做必要的补充说明,返回至“编码风格”,2020/9/13,20,语句结构,基本原则 简明扼要,每个语句都应该简单而直接,不能为了提高效率而使程序变得过分复杂 一行只写一条语句 其它参考建议: 程序要能直截了当地说明程序员的用意 避免使用临时变量而使可读性下降 尽可能使用库函数 避免不必要的转移。同时如果能保持程序可读性,则不必用 GOTO语句 尽量只采用三种基本的控制结构来编写程序,返回至“编码风格”,2020/9/13,21,输入输出,对所有输入数据都进行检验,识别错误的输入 检查输入项重要组合的合法性 保持输入格式简单 使用数据结束标记,不要

10、要求用户指定数据的数目 明确提示交互式输入的请求,详细说明可用的选择或边界数值 当程序设计语言对格式有严格要求时,应保持输入格式一致 设计良好的输出报表 给所有输出数据加标志,返回至“编码风格”,2020/9/13,22,效率,程序的效率是指程序的执行速度及程序所需占用的内存的存储空间 三条效率原则 效率是性能要求,因此应该在需求分析阶段确定效率方面的要求 效率是靠好设计来提高的 程序的效率和程序的简单程度是一致的。不要牺牲程序的清晰性和可读性来不必要地提高效率,返回至“编码风格”,返回至“本章内容”,2020/9/13,23,1、恰当的标识符,符号名即标识符,包括模块名、变量名、常量名、标号

11、名、子程序名、数据区名、缓冲区名等 这些名字应该反映它所代表的实际东西,应具有一定的实际意义 例:表示次数的量用Times,表示总量的用Total,表示平均值的用Average,表示和的量用Sum等等 名字不是越长越好,应当选择精炼的意义明确的名字,返回,2020/9/13,24,2、适当的注解语句,夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段 一些正规的程序文本中,注释行的数量占整个源程序的1/3到1/2,甚至更多 两种注释: 序言性注释 功能性注释,返回,2020/9/13,25,3、程序的组织视觉,恰当地利用空格,可以突出运算的优先性,避免发生运算的错误 自然的程序段之间可

12、用空行隔开 移行也叫做向右缩进。它是指程序中的各行不必都在左端对齐,都从第一格起排列。这样做使程序完全分不清层次关系 对于选择语句和循环语句,把其中的程序段语句向右做阶梯式移行。使程序的逻辑结构更加清晰,返回,2020/9/13,26,序言性注释,通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引导性作用 具体包括: 程序标题 有关本模块的功能和目的的说明 主要算法 接口说明 有关数据描述 模块位置 开发简历,2020/9/13,27,功能性注释,功能性注释嵌在源程序体中,用以描述其后的语句或程序段是在做什么工作,或是执行了下面的语句会怎么样,而不是解释下面是怎么

13、做 例如:/* Add amout to Total */ TOTAL=AMOUNT+TOTAL (不好) 如果注明把月销售额计入年度总额,便使读者理解下面语句的意图: /*把月销售额计入年度总额*/ TOTAL=AMOUNT+TOTAL,2020/9/13,28,第二节 软件测试基础,一、软件测试的现实需要 客观因素:在开发大型软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺,因此,在软件生命周期的每个阶段都不可避免地会产生差错 主观因素:我们力争在每个阶段结束之前进行严格的技术审查,尽可能及早发现并

14、纠正差错。但是,经验表明审查并不能发现所有差错 二、软件测试的目的 在软件投入生产性运行之前,尽可能多地发现软件中的错误,2020/9/13,29,第二节 软件测试基础,三、相关的数字 大量统计资料表明,软件测试的工作量往往占软件开发总工作量的70%以上 极端情况下,测试那种关系人的生命安全的软件所花费的成本,可能相当于软件工程其他步骤总成本的35倍 四、调试 通过测试发现错误之后必须诊断并改正错误,这便是调试 调试是测试阶段最困难痛苦的工作,2020/9/13,30,第二节 软件测试基础,五、测试的目标 测试是为了发现程序中的错误而执行程序的过程 好的测试方案是极可能发现迄今为止尚未发现的错

15、误的测试方案 成功的测试是发现了至今为止尚未发现的错误的测试 六、在综合测试阶段通常由其他人员组成测试小组来完成测试工作 七、测试一般不可能穷尽所有可能取值,在不论多少次测试中,如果都没有发现错误,也不能证明软件没有错误,2020/9/13,31,第二节 软件测试基础,每个数有216种,三个数的组合数有216216216 24831014种,假定每次执行一次程序需要一毫秒,执行24831014次大约需要一万年! 才能测试完毕。不可能进行穷尽测试。只能进行有限次的抽样测试。,2020/9/13,32,第二节 软件测试基础,八、测试用例(test case) 测试用例是指为寻找程序中的错误而精心设

16、计的一组测试数据及预期的测试结果。必须精心设计测试用例,挑选尽可能少的测试数据,使得采用这些测试数据能够达到最佳的效果,或说能够高效率地把隐藏的错误揭露出来 九、测试对象 软件测试并不等于程序测试 软件测试应贯穿于软件定义与开发的整个期间 需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求分析规格说明书、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象,2020/9/13,33,第二节 软件测试基础,需求分析,程序编码,详细设计,概要设计,需求规格说明书,概要设计规格说明,源程序代码,详细设计规格说明,测试对象,2020/9/13,34,第二节 软件测试基础,十、黑盒测试和白盒测试 黑盒测试和白盒测试是设计测试用例的两种方法 黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程,它是在程序接口进行的测试:,2020/9/13,35,第二节 软件测试基础,十、黑盒测试和白盒测试 黑盒测试是为了发现以下六类错误: 是否有不正确或遗漏了的功能? 在接口上,输入能否正确地接受?能否输出正确的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号