软件工程第七章
软件工程导论第五版第七章

第7章实现7。
1编码7。
1。
1选择程序设计语言7.1。
2编码风格1。
程序内部的文档2。
数据说明3。
语句构造4。
输入输出5。
效率7。
2软件测试基础7。
2。
1软件测试的目标7。
2.2软件测试准则7。
2。
3测试方法7。
2.4测试步骤1。
模块测试2. 子系统测试3. 系统测试4。
验收测试5。
平行运行7。
2。
5测试阶段的信息流图7。
1测试阶段的信息流7.3单元测试7.3。
1测试重点1. 模块接口2. 局部数据结构3. 重要的执行通路4. 出错处理通路5。
边界条件7.3.2代码审查7.3.3计算机测试图7.2正文加工系统的层次图7。
4集成测试7.4。
1自顶向下集成图7.3自顶向下结合7.4.2自底向上集成图7。
4自底向上结合7.4.3不同集成测试策略的比较7.4。
4回归测试7.5确认测试7。
5.1确认测试的范围7。
5。
2软件配置复查7.5。
3Alpha和Beta测试7.6白盒测试技术7。
6.1逻辑覆盖1。
语句覆盖图7.5被测试模块的流程图2. 判定覆盖3。
条件覆盖4. 判定/条件覆盖5. 条件组合覆盖6。
点覆盖7. 边覆盖8。
路径覆盖7。
6.2控制结构测试1. 基本路径测试图7。
6求平均值过程的流图2. 条件测试3. 循环测试图7。
73种循环7。
7黑盒测试技术7。
7。
1等价划分7。
7。
2边界值分析7.7。
3错误推测7.8调试7。
8.1调试过程图7。
8调试过程7.8。
2调试途径1。
蛮干法2。
回溯法3. 原因排除法7.9软件可靠性7。
9.1基本概念1. 软件可靠性的定义2. 软件的可用性7.9。
2估算平均无故障时间的方法1。
符号2。
基本假定3。
估算平均无故障时间4。
估计错误总数的方法7.10小结习题71。
下面给出的伪码中有一个错误。
仔细阅读这段伪码,说明该伪码的语法特点,找出并改正伪码中的错误。
字频统计程序的伪码如下:2。
研究下面给出的伪码程序,要求:(1) 画出它的程序流程图.(2)它是结构化的还是非结构化的?说明理由。
软件工程第7章

过程内聚:构件或操作的组合方式是,允许在调 用前面的构件或操作之后,马上调用后面的构件 或操作,即使两者之间没有数据进行传递。如果 一个模块内处理元素是相关的,而且必须按固定 的次序执行,那么这种内聚就叫做过程内聚。过 程内聚的模块内往往体现为有次序的流程。 通信内聚:指模块内所有处理元素都在同一个数 据结构上的操作。或指各处理元素使用相同的输 入数据或者产生相同的输出数据。
4.模块独立性 模块独立性是指每个模块只完成系统要求的独立 的子功能,并且与其它模块的联系最少,且接口 简单。 “高内聚、低耦合”是两个定性的度量标准。 (1)耦合性 耦合是对不同模块之间相互依赖程度的度量。 紧密耦合是指两个模块之间存在着很强的依赖关 系。 松散耦合是指两个模块之间存在一些较弱的依赖 关系。无耦合是指模块之间根本没有任何连接与 依赖关系。 模块之间联系越紧密,其耦合性越强,其独立性 就越差。模块间的耦合性从低到高可分为以下七 种类型,如图7-3所示:
(1) 控制抽象 计算机语言具备控制抽象的能力。计算机只理解 一些低级的操作,例如将字节从一个位置移动到 另一个位置,对两个字节进行连接。从机器指令 到汇编语言,再到高级语言,使你能在更高的层 次上进行抽象,以便处理问题,并且可以屏蔽不 同机器和指令集间的差异。 面向过程的设计通过清晰的控制流程和部件间的 接口,来实现对复杂的软件进行分解,达到降低 软件复杂度的目的。面向对象的设计同时进行数 据抽象和控制抽象,从而实现使数据和控制融为 一体,构成一个完整的对象。
2.模块化 模块就是指在程序中的数据说明、可执行语句等 程序对象的集合,或者是单独命名和编址的元素。 如高级语言中的过程,函数、子程序等。每个模 块可以完成一个特定的子功能,各个模块可以按 一定方法组装起来成为一个整体。 所谓模块化,就是解决一个复杂问题时,自顶向 下、逐步求精地把软件系统划分成若干模块的过 程。 划分模块并不是越多越好,因为这会增加模块之 间接口的工作量。所以划分模块的层次和数量应 该避免过多或过少 。
软件工程_第七章_面向数据流的设计方法

第七章面向数据流的设计方法面向数据流的设计方法,即通常所说的结构设计法(简称SD方法),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。
数据流图主要描绘信息在系统内部加工和流动的情况,面向数据流的设计方法根据数据流图的特性定义两种“映射”,这两种映射能机械地将数据流图转换为程序结构。
该方法的目标是为软件结构设计提供一个系统化的途径,使设计人员对软件有一个整体的认识。
本章所述技术用于软件的概要设计描述,包括模块、界面和数据结构的定义,这是所有后续开发工作的基础。
每种软件设计方法都有长处和不足,先用哪种方法首先应考虑它适用的范围。
任何软件系统都可以用数据流图表示,理论上,面向数据流的设计方法可用于任一种软件系统的开发。
然而,该方法对那些顺序处理信息且不含层次数据结构的系统最为有效,例如过程控制、复杂的数值分析过程、以及科学与工程方面的应用,等等。
当SD方法用于完全的数据处理时,即使系统中作用层次数据也同样行之有效。
从系统设计的角度出发,软件设计方法可以分为三大类。
第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法为代表。
第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以LCP(程序逻辑构造)方法、Jackson 系统开发方法和数据结构化系统开发(DSSD)方法为代表。
第三类设计方法即面向对象的设计。
第一节基本概念和设计过程面向数据流设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。
该方法实施的要点是:①建立数据流的类型。
②指明流的边界。
③将数据流图映射到程序结构。
④用“因子化”方法定义控制的层次结构。
⑤用设计测量和一些启发式规则对结构进行细化。
一、在系统结构图(SC)中的模块在系统结构图中不能再分解的底层模块为原子模块。
如果一个软件系统的全部实际加工(数据计算或处理)都由底层的原子模块来完成,而其他所有非原子模块仅仅执行控制或协调功能,这样的系统就是完全因子分解的系统。
软件工程导论(第7章)

测试的正确定义:“为了发现程序中的错 误而执行程序的过程。”
7.2.2 软件测试准则
1)所有测试都应该能追溯到用户需求;
2)应该远在测试前就制定出测试计划;
3)把Pareto原理应用到软件测试中;Pareto原理 说明测试发现的错误中的80%很可能是由程序 中20%的模块造成的。
4)应该从“小规模”测试开始,并逐步进行“大 规模”测试;
USER32.DLL; GDI32.DLL; KERNEL32.DLL。
Windows消息机制:
1)基于消息的事件驱动 消息可以是由硬件发来的(存于系统队列),
也可以由Windows系统和应用程序发来(存于 程序队列中);
每一个Windows程序在不停的捕捉各种消息, 并进行处理;
每个窗口都必须有一个窗口函数,来负责消息 的判断与处理。
3)重要的执行路径 由于不可能进行穷尽测试,因此选择测试
路径是非常关键的。 4)出错处理通路 5)边界条件
7.3.2 代码审查
审查小组: 1)组长; 2)程序的设计者; 3)程序的编写者; 4)程序的测试者。
7.3.3 计算机测试
由于软件模块不是一个独立的系统,不能独 立运行,要依靠其他模块调用,或需要调用其 他模块。
1.模块测试 模块测试又称单元测试,它把每个模块作为
单独的实体来测试。 2.子系统测试
子系统测试是把经过单元测试的模块放在一 起形成一个子系统来测试。
3.系统测试 系统测试是把经过测试的子系统装配成一个完
整的系统来测试。 4.验收测试
验收测试把软件系统作为单一的实体进行测试 (利用用户的实际数据测试)。 5.平行运行
如PL/1、PASCAL、C、ADA等 3)专用语言 如APL、BLISS、FORTH、LISP、PROLOG等
软件工程考核知识点-第7章-软件测试

软件工程考核知识点-第7章-软件测试7.1 软件测试的目的及原则7.1.1 软件测试的目的(1)软件测试是为了发现错误而执行程序的过程。
(2)一个好的测试用例能够发现至今尚未发现的错误。
(3)一个成功的测试是发现了至今尚未发现的错误的测试。
因此,测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组“高产”的测试用例,利用这些实例执行程序,找出软件中潜在的各种错误和缺陷。
7.1.2软件测试的原则在软件测试中,应注意以下原则:(1)测试用例应由输入数据和预期的输出数据两部分组成。
这样便于对照检查,做到"有的放矢"。
(2)测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。
这样能更多地发现错误,提高程序地可靠性。
对于不合理地输入数据,程序应拒绝接受,并给出相应提示。
(3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。
例如程序正确打印出用户所需信息的同时还打印出用户并不需要的多余的信息。
(4)应制定测试计划并严格执行,排除随意性。
(5)长期保留测试用例。
测试用例的设计耗费很大的工作量,必须作为文档保存。
因为修改后的程序可能有新的错误,需要进行回归测试。
同时,为以后的维护提供方便。
(6)对发现错误较多的程序段,应进行更深入的测试。
有统计数字表明,一段程序中所发现的错误数越多,其中存在的错误概率也越大。
因为发现错误数多的程序段,其质量较差。
同时在修改错误过程中又容易引入新的错误。
(7)程序员避免测试自己的程序。
测试是一种"挑剔性"的行为,心理状态是测试自己程序的障碍。
另外,对需求规格说明的理解而引入的错误则更难发现。
因此应由别的人或另外的机构来测试程序员编写的程序会更客观,更有效。
7.2 测试方法软件测试方法一般分为两大类:动态测试方法与静态测试方法,而动态测试方法中又根据测试用例的设计方法不同,分为黑盒测试与白盒测试两类。
第七章软件工程概述

1、软件工程
2、软件工程过程
软件工程过程是开发或维护软件及其相关产品的一系列活动。软件 工程过程规定了获取、供应、开发、操作和维护软件时,要实施的 过程、活动和任务。其目的是为各种人员提供一个公共的框架,以 便使用相同的语言进行交流。软件工程过程一般包括开发过程、管 理过程、供应过程、获取过程、操作过程、维护过程和支持过程等 七个方面。
2、原型模型
件项目开发而言的。许多软件开发项目由于人们对 软件需求的认识模糊,很难一次开发成功,返工再开发难 以避免。因此,人们对需开发的软件给出基本需求,作第 一次试验开发,其目标仅在于探索可行性和弄清需求,取 得有效的反馈信息,以支持软件的最终设计和实现。通常 我们把第一次实验性开发出的软件称为原型 (prototype)。这种开发模型可以减少由于需求不明给 开发工作带来的风险,有较好的效果。相对瀑布模型来说, 原型模型更符合人类认识真理的过程和思维,是目前较流 行的一种实用的软件开发方法。原型模型如图所示。
3、软件工程的生存周期
6.运行与维护 已交付的软件投入正式使用,便进入运行阶段。这一阶段
可能持续若干年甚至几 十年。软件在运行中可能由于多方面的原因,需要对它进
行修改。其原因可能有:运行中发现了软件中的错误需要 修正;为了适应变化了的软件工作环境,需做适当变更; 为了增强软件的功能需做变更等。
1.开发过程
开发过程就是开发者和机构为了定义和开发软件或服务所需的活动。 此过程包括需求、分析、设计、编码、集成、测试、软件安装和验 收等活动。
软件工程 第七章测验 测验答案 慕课答案 UOOC优课 课后练习 深圳大学
第七章测验一、单选题(共40.00分)1. 面向对象的动态模型中,每张状态图表示()的动态行为。
A. 某一个类B. 有关联的若干类C. 一系列事件D. 一系列状态正确答案:A2. 以下哪项不是类间关系?()A. 关联B. 继承C. 实现D. 通信正确答案:D3. 在建立动态模型的过程中,脚本是指系统在某一执行期间内出现的一系列()。
A. 事件B. 消息C. 动作D. 对象正确答案:A4. 大多数分析模型都不是一次完成的,必须进行()。
A. 多次回溯B. 多次迭代C. 多次评审正确答案:B二、多选题(共33.00分)1. 组成复杂问题(大型系统)对象模型的5个层次包括()。
A. 结构层B. 说明层C. 服务层D. 主题层正确答案:A C D2. 需求陈述的内容包括()。
A. 问题范围B. 功能需求C. 性能需求D. 应用环境及假设条件正确答案:A B C D3. 以下哪些工具可用于描述面向对象动态模型?()A. UML类图B. UML状态图C. UML顺序图D. UML活动图正确答案:B C D三、判断题(共27.00分)1. 顺序图描述对象之间的交互关系,重点描述对象间消息传递的时间顺序。
()A. 正确B. 错误2. 面向对象方法是以类作为最基本的元素,类是分析问题和解决问题的核心。
()A. 正确B. 错误正确答案:B3. 关联既可以描述问题域的静态结构,又可以描述瞬时事件。
()A. 正确B. 错误正确答案:B。
自学考试软件工程第7章自测题及参考答案
第7章自测题及参考答案一、名词解释1. 软件测试2.黑盒法3.白盒法4.渐增式测试5.非渐增式测试6.调试二、填空题1.软件测试是为了_____而执行程序的过程。
2.运行被测程序的方法称为_______测试。
3.动态测试中,主要测试软件功能的方法称为______法。
4.选择测试用例,使得被测程序中每个判定的每个分支至少执行一次,这种逻辑覆盖标准称为_______。
5.要覆盖含有循环结构的所有路径是不可能的,一般通过限制_____来测试。
6.用等价类划分法设计测试用例时,如果被测程序的某个输入条件规定了取值范围,则可确定一个合理的等价类和_______。
7.凭经验或直觉推测程序中可能存在的错误而设计测试用例的方法是_______。
8.集成测试中的具体方法是______。
9.确认测试阶段的两项工作是______。
10.在单元测试中,测试一个模块时,需要设计_______。
三、选择题1.测试的关键问题是( )。
A.如何组织软件评审B.如何选择测试用例C.如何验证程序的正确性D.如何采用综合策略2.软件测试用例主要由输入数据和( )两部分组成。
A.测试计划B.测试规则C.预期输出结果D.以往测试记录分析3.成功的测试是指运行测试用例后( )。
A.未发现程序错误B.发现了程序错误C.证明程序正确D.改正了程序错误4.下列几种逻辑覆盖标准中,查错能力最强的是( )。
A.语句覆盖B.判定覆盖C.条件覆盖D.条件组合覆盖5.在黑盒测试中,着重检查输入条件组合的方法是( )。
A.等价类划分法B.边界值分析法C.错误推测法D.因果图法6.单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是( )。
A.系统功能B.局部数据结构C.重要的执行路径D.错误处理7.软件测试过程中的集成测试主要是为了发现( )阶段的错误。
A.需求分析B.概要分析C.详细设计D.编码8.不属于白盒测试的技术是( )。
A.路径覆盖B.判定覆盖C.循环覆盖D.边界值分析9.集成测试时,能较早发现高层模块接口错误的测试方法为( )。
软件工程 第7章1 ppt
(9) 最高位数字后面有空格; 输入:’ 1 2’ 预期的输出:“错误——无效输入” (10)最高位数字后面有其他字符; 输入:’ 1××2’ 预期的输出:“错误——无效输入” (11)负号与最高位数字之间有空格; 输入:’12’ 预期的输出:“错误——负号位置错” 。
7.7.2 边界值分析
1. 程序运行在边界情况时最容易发生错误。 因此, 设计使程序运行在边界情况附近的测试方案,暴 露出程序错误的可能性更大一些。 2. 使用边界值分析方法设计测试方案首先应该确定 边界情况; 通常输入等价类和输出等价类的边界 按照边界值分析法,应该选取刚好等于、稍小于和 稍大于等价类边界值的数据作为测试数据,而不是 选取每个等价类内的典型值或任意值作为测试数据。 3. 通常设计测试方案时总是联合使用等价划分和边界 值分析两种技术。
图7.8 调试过程
7.8.2 调试途径
◆ 调试的目标都是寻找软件错误的原因并改正错 误。这需要系统地分析、直觉和运气,才能实现 上述目标。 ◆一般,有下列3种调试途径可以采用: 1. 蛮干法 2. 回溯法 3. 原因排除法
7.8.2 调试途径
1. 蛮干法 ◆ 按照“让计算机自己寻找错误”的策略,在这样 生 成的信息海洋的某个地方发现错误原因的线索。 ◆ 蛮干法可能是寻找软件错误原因的最低效的方 法。仅当所有其他方法都失败了的情况下,才应 该使用这种方法。
3) 演绎法 ◆ 从一般原理或前提出发,经过排除和精化的过 程推导出结论。 ◆ 采用这种方法调试程序时,首先设想出所有可 能的出错原因,然后试图用测试来排除每一个 假设的原因。 ◆ 如果测试表明某个假设的原因可能是真的原因, 则对数据进行细化以准确定位错误。 总结: ◆ 上述3种调试途径都可以使用调试工具辅助完成, ◆ 如果用遍了各种调试方法和调试工具却仍然找不 出错误原因,则应该向同行求助。
软件工程第7章习题
5. 软件测试用例主要由输入数据和( 成 A 测试计划 C 预期输出结果 B 测试规则
)两部分组
D 以往测试记录分析 答案: C )
6. 成功的测试是指运行测试用例后( A 未发现程序错误 C 证明程序正确
B 发现了程序错误 D 改正了程序错误 答案: B
7. 下列几种逻辑覆盖标准中, 查错能力最强的是( 答案: D
8. 在黑盒测试中, 着重检查输入条件组合的方法是 ( ) A 等价类划分法 C 错误推测法 B 边界值分析法 D 因果图法 )
)
A 语句覆盖 B 判定覆盖 C 条件覆盖 D 条件组合覆盖
答案: D 9. 软件测试过程中的集成测试主要是为了发现( 阶段的错误 A 需求分析 B 概要设计 C 详细设计 D 编码 答案: B
4. 在单元测试时, 需要为被测试模块设计( 答案: 驱动模块与桩模块 5. 在集成测试时有两种测试方法, 它们是( 答案: 渐增式和非渐增式 6. 软件测试是为了( )而执行程序的过程 )
)
答案: 发现错误 7. 运行被测试程序的方法称为( 答案: 动态 )测试
8. 动态测试中, 主要测试软件功能的方法称为( 答案: 黑盒
12. 集成测试中的具体方法是(
)
答案: 渐增式和非渐增式测试方法 二. 选择题 1. 软件测试中, 白盒法是通过分析程序的( 设计测试用例的 A 应用范围 B 内部逻辑 C 功能 答案: B 2 . 黑盒法是根据程序的( A 应用范围 B 内部逻辑 ) 来设计测试用例的 C 功能 D 输入数据 )来
D 输入数据
答案: C
3. 为了提高软件测试的效率, 应该(
A 随机地选取测试数据 B 取一切可能的输入数据作为测试数据 C 在完成编码以后制定软件的测试计划