软件工程导论第五版 第七章
《软件工程导论》张海潘第五版清华课后答案

了解结构化开发方法的核心概念和工具,提供 对练习问题的参考答案。
面向对象开发方法
第五章
深入探讨面向对象开发方法的理论和实践,学习如何设计和构建强大的面向 对象软件系统。
课后答案
第一章答案
掌握软件工程概述的关键知识点,提供练习题 的答案以加深理解。
第三章答案
学习需求分析和建模的实际应用,提供对课后 习题的详细解答。
第二章答案
了解软件生命周期的各个阶段,掌握解决实践 问题的方法和技巧。
《软件工程导论》张海潘 第五版清华课后答案
欢迎来到《软件工程导论》张海潘第五版清华课后答案的世界。让我们一起 探索这门令人兴奋的学科,并发现其中的奥秘和乐趣。
课本信息
书名:《软件工程导论》
作者:张海潘
版本:第五版
出版社:清华大学出版社
作者简介
张海潘
张海潘是一位资深的软件工程教授,拥有丰富的教学和研究经验。他对软件 开发过程和方法论有着深入的研究,并致力于培养下一代的软件工程师。
章节导引Biblioteka 1第二章:软件生命周期
2
深入研究软件项目的整个生命周期,了
解每个阶段的任务和活动。
3
第四章:结构化开发方法
4
介绍结构化开发方法的基本原理和技术, 帮助开发人员构建可靠和易维护的软件。
第一章:软件工程概述
了解软件工程的基本概念和原理,掌握 软件工程的核心思想和目标。
第三章:需求分析与建模
学习如何捕捉用户需求并进行有效的需 求分析和建模。
软件工程导论第五版第七章

第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)它是结构化的还是非结构化的?说明理由。
软件工程导论知识点总结(整理)

软件危机是指在计算机软件的开辟和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开辟出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)普通软件很难维护。
(4)软件生产效率很低。
(5)软件开辟成本越来越大。
(6)软件成本与开辟进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
(1) 开辟人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开辟中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开辟过程没有统一的、公认的方法论和规范指导,造成软件维护艰难。
(3) 特别是随着软件规模越来越大,复杂程度越来越高,原有软件开辟方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护艰难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特殊是吸取几十年来人类从事计算机硬件研究和开辟的经验教训。
在开辟软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开辟软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开辟更好的软件工具并使用这些工具。
将软件开辟各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开辟支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
应用程序、系统程序、面向用户的文档资料和面向开辟者的文档资料。
软件生存周期是指从软件定义、开辟、使用、维护到淘汰的全过程。
(1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开辟工作的艰难程度。
(2) 可以降低每一个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法。
《软件工程导论》张海潘 第五版 清华 课后答案

WATCHING
THANKS FOR
实践应用:软件测试与质量保证
测试计划制定
根据软件需求和测试目标,制定详 细的测试计划,包括测试范围、测 试方法、测试资源以及测试进度等 方面的内容。
测试用例设计与执行
根据测试计划设计有效的测试用例, 并严格按照测试用例执行测试过程, 以确保软件的质量和稳定性。
缺陷管理与回归测试
建立缺陷管理机制,对测试过程中 发现的缺陷进行跟踪和管理,并进 行回归测试以确保缺陷得到修复并
软件工程的概念及基本原则
软件工程是一门研究计算机软件开发、维护和管理的科学。其基本原则包括强调需求分析、采用合 适的设计方法、实行严格的测试和维护等。
软件生命周期及各阶段任务
软件生命周期包括需求分析、设计、编码、测试和维护等阶段。各阶段的主要任务分别是明确用户 需求、设计系统结构、编写程序代码、测试软件功能和修复漏洞等。
案例分析三
某移动APP产品的敏捷开发实践。该案例以 敏捷开发方法为基础,介绍了产品迭代规划、 用户故事编写、任务分解以及站会等敏捷实 践活动的应用,对于理解敏捷开发方法的精 髓和实施具有很好的启示作用。
实践应用:软件开发项目管理
项目计划制定
根据项目需求和目标,制定详细的项目计划,包括任务分解、 资源分配、进度安排以及风险管理等方面的内容。
不再出现。
质量评估与改进
通过质量评估活动对软件的质量进 行全面评估,并根据评估结果制定 相应的质量改进措施,以提高软件
软件工程导论(第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等
软件工程导论 张海藩(第5版)第7章

3. 语句构造 不要为了节省空间而把多个语句写在同一行; 尽量避免复杂的条件测试; 尽量减少对“非”条件的测试; 避免大量使用循环嵌套和条件嵌套; 利用括号使逻辑表达式或算术表达式的运算次 序清晰直观。
4. 输入输出 对所有输入数据都进行检验; 检查输入项重要组合的合法性; 保持输入格式简单; 使用数据结束标记,不要要求用户指定数据的数目; 明确提示交互式输入的请求,详细说明可用的选择或 边界数值; 当程序设计语言对格式有严格要求时,应保持输入格 式一致; 设计良好的输出报表; 给所有输出数据加标志。
7.3.2 代码审查
由审查小组正式进行测试称为代码审查; 可查出30%~70%的逻辑设计错误和编码错误; 审查小组组成:
组长 程序的设计者 程序的编写者 程序的测试者
WORK=A[T]; A[T]=A[I]; A[I]=WORK;
例7:简单直接
for (i=1; i<=n; i++) for (j=1; j<=n; j++) V[i][j]=(i/j)*(j/i)
for (i=1; i<=n; i++) for (j=1; j<=n; j++) if (i==j) V[i][j]=1; else V[i][j]=0;
(2) 存储器效率
使用能保持功能域的结构化控制结构,是提高 效率的好方法。
在微处理机中如果要求使用最少的存储单元, 则应选用有紧缩存储器特性的编译程序,在非 常必要时可以使用汇编语言。 提高执行效率的技术通常也能提高存储器效率。 提高存储器效率的关键同样是“简单”。
软件工程导论-张海藩-第五版课后习题答案

多态
多态是指同一个操作作用于不 同的对象,可以产生不同的结 果。
UML建模语言简介
UML是一种用于对软件密集系统进行可视化建模 的统一建模语言。
UML通过统一的符号和工具,为软件开发人员提 供了一种通用的建模语言。
UML可以描述软件系统的静态结构和动态行为, 包括类图、时序图、用例图等。
面向对象分析、设计和实现过程
列表。
与用户确认需求列表,确保对用户需求有准确的理解。
03
需求规格说明书编写
01
编写详细的需求规格说明书,包括功能需求、性能需求、接 口需求等。
02
使用清晰、准确的语言描述需求,避免歧义和模糊性。
03
提供必要的图表、示例和数据,以便更好地理解和实现需求 。
需求变更管理
建立需求变更管理流 程,确保所有变更都 经过评估和批准。
及时通知相关干系人, 协商并处理变更请求, 确保项目顺利进行。
对变更进行影响分析, 评估变更对项目进度、 成本和质量的影响。
03 系统设计
总体设计原则与方法
模块化
将系统划分为若干个相对独立的模块, 每个模块具有特定的功能,模块之间 通过接口进行通信。
高内聚、低耦合
模块内部的功能应该高度相关,而模 块之间的依赖关系应该尽量减少。
要点二
软件评估技术
软件评估技术包括代码审查、走查、桌面检查等。代码审 查是一种正式的评估技术,由一组开发人员对源代码进行 详细检查以发现错误;走查是一种轻量级的评估技术,由 开发人员自行检查代码并记录下潜在的问题;桌面检查则 是一种非正式的评估技术,由评估人员通过查看文档和演 示来评价软件产品的质量。
THANKS FOR WATCHING
感谢您的观看
软件工程导论第五版复习资料全

软件危机的表现
1)对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个
数量级、 实际进度比计划进度拖延几个月甚至几年的现象,
从而降低了开发商的信誉, 引起
用户不满。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作
读输入
计算最佳解
编辑结果
编辑输入
输出结果
解 格式化 的解
结果格式化
格式化 的解
显示结果
.专业 .整理 .
下载可编辑
M
M
A
B
A
B
C
a.选择调用
b.循环调用
7、面向数据流的设计方法 变换分析
变换分析是一系列设计步骤的总称, 确定的模式映射成软件结构。
经过这些步骤把具有变换流特点的数据流图按预先
1)重画数据流图;确定其具有变换流特征。
设: i 表示年利率,现在存入 P 元, n 年后的价值为 F 元,
则有:
F=P
(1 + i )n
如果 n 年后能收入 F 元,这些钱折算成现在的价值称为折现值,折现公式为:
P=F/
(1 + i )n
2)纯收入。 是指在整个生存周期系统的累计收入的折现值
PT 与总成本折现值 S T 之差,
以 T 表示,则有:
3)深度、宽度、扇出和扇入都应适当
4)模块的作用围应在控制围之
5)力争降低模块接口的复杂程度 6)设计单入口单出口的模块
7)模块功能应该可以预测
6、描绘软件结构的图形工具(层次图、 HIPO 图、结构图)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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. 平行运行
2
软件工程导论(第五版) 7.2.5测试阶段的信息流
图7.1测试阶段的信息流7.3单元测试
7.3.1测试重点
1. 模块接口
2. 局部数据结构
3. 重要的执行通路
4. 出错处理通路
5. 边界条件
软件工程导论(第五版) 3 7.3.2代码审查
7.3.3计算机测试
图7.2正文加工系统的层次图
7.4集成测试
7.4.1自顶向下集成
图7.3自顶向下结合
4
软件工程导论(第五版) 7.4.2自底向上集成
图7.4自底向上结合
软件工程导论(第五版) 5 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. 判定/条件覆盖
6
软件工程导论(第五版)
5. 条件组合覆盖
6. 点覆盖
7. 边覆盖
8. 路径覆盖
7.6.2控制结构测试
1. 基本路径测试
图7.6求平均值过程的流图
2. 条件测试
3. 循环测试
软件工程导论(第五版) 7
图7.73种循环
8
软件工程导论(第五版) 7.7黑盒测试技术
7.7.1等价划分
7.7.2边界值分析
7.7.3错误推测
7.8调试
7.8.1调试过程
图7.8调试过程7.8.2调试途径
1. 蛮干法
2. 回溯法
3. 原因排除法
软件工程导论(第五版) 9 7.9软件可靠性
7.9.1基本概念
1. 软件可靠性的定义
2. 软件的可用性
7.9.2估算平均无故障时间的方法
1. 符号
2. 基本假定
3. 估算平均无故障时间
4. 估计错误总数的方法
7.10小结
习题7
1. 下面给出的伪码中有一个错误。
仔细阅读这段伪码,说明该伪码的语法特点,找出并
改正伪码中的错误。
字频统计程序的伪码如下:
10
软件工程导论(第五版)
2. 研究下面给出的伪码程序,要求:
(1) 画出它的程序流程图。
(2) 它是结构化的还是非结构化的?说明理由。
(3) 若是非结构化的,则
(a) 把它改造成仅用3种控制结构的结构化程序;
(b) 写出这个结构化设计的伪码;
(c) 用盒图表示这个结构化程序。
(4) 找出并改正程序逻辑中的错误。
3. 在第2题的设计中若输入的N值或KEYWORD不合理,会发生问题。
(1) 给出这些变量的不合理值的例子。
(2) 将这些不合理值输入程序会有什么后果?
(3) 怎样在程序中加入防错措施,以防止出现这些问题?
4. 回答下列问题。
(1) 什么是模块测试和集成测试?它们各有什么特点?
(2) 假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发现多少个错误?为什么?
(3) 设计下列伪码程序的语句覆盖和路径覆盖测试用例:
5. 某图书馆有一个使用CRT终端的信息检索系统,该系统有下列4个基本检索命令:
要求:
(1) 设计测试数据以全面测试系统的正常操作;
(2) 设计测试数据以测试系统的非正常操作。
6. 航空公司A向软件公司B订购了一个规划飞行路线的程序。
假设自己是软件公司C的软件工程师,A公司已雇用自己所在的公司对上述程序进行验收测试。
任务是,根据下述事实设计验收测试的输入数据,解释选取这些数据的理由。
领航员向程序输入出发点和目的地,以及根据天气和飞机型号而初步确定的飞行高度。
程
序读入途中的风向风力等数据,并且制定出3套飞行计划(高度,速度,方向及途中的5个
位置校核点)。
所制定的飞行计划应做到燃料消耗和飞行时间都最少。
7. 严格说来,有两种不同的路径覆盖测试,分别为程序路径覆盖和程序图路径覆盖。
这两种测试可分别称为程序的自然执行和强迫执行。
所谓自然执行是指测试者(人或计算机)读入程序中的条件表达式,根据程序变量的当前值计算该条件表达式的值(真或假),并相应地分支。
强迫执行是在用程序图作为程序的抽象模型时产生的一个人为的概念,它可以简化
测试问题。
强迫执行的含义是,一旦遇到条件表达式,测试者就强迫程序分两种情况(条件表达式的值为真和为假)执行。
显然,强迫执行将遍历程序图的所有路径,然而由于各个条件表达式之间存在相互依赖的关系,这些路径中的某一些在自然执行时可能永远也不会进入。
为了使强迫执行的概念在实际工作中有用,它简化测试工具的好处应该超过它使用额外的不可能达到的测试用例所带来的坏处。
在绝大多数情况下,强迫执行的测试数并不比自然执行的测试数大很多,此外,对强迫执行的定义实际上包含了一种技术,能够缩短在测试含有循环的程序时所需要的运行时间。
程序的大部分执行时间通常用于重复执行程序中的DO循环,特别是嵌套的循环。
因此必须发明一种技术,使得每个DO循环只执行一遍。
这样做并不会降低测试的功效,因为经验表明第一次或最后一次执行循环时最容易出错。
Laemmel教授提出的自动测试每条路径的技术如下。
当编写程序时每个DO循环应该写成一种包含测试变量T和模式变量M的特殊形式,因此
DO I= 1 TO 38
应变成
DO I=1 TO M*38+(1-M)*T
可见,当M=0时处于测试模式,而M=1时处于正常运行模式。
当处于测试模式时,令T=0则该循环一次也不执行,令T=1则该循环只执行一次。
类似地应该使用模式变量和测试变量改写IF语句,例如
IF X+Y>0THEN Z=X
ELSEZ=Y
应变成
IF M*(X+Y)+T>0THEN Z=X
ELSE Z=Y
正常运行时令M=1和T=0,测试期间令M=0,为测试THEN部分需令T=+1,测试ELSE 部分则令T=-1。
要求:
(1) 选取一个包含循环和IF语句的程序,用Laemmel技术修改这个程序,上机实际测试这个程序并解释所得到的结果。
(2) 设计一个程序按照Laemmel技术自动修改待测试的程序。
利用这个测试工具修改上一问中人工修改的程序,两次修改得到的结果一致吗?
(3) 怎样把Laemmel技术推广到包含WHILE DO 和REPEAT UNTIL语句的程序?
(4) 试分析Laemmel技术的优缺点并提出改进意见。
8. 对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。
要求:
(1) 根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间τ的关系曲线。
在画这条曲线时做了什么假设?
(2) 为做到MTTF=100h,必须进行多长时间的集成测试?当集成测试结束时总共改正了
多少个错误,还有多少个错误潜伏在程序中?
9. 如对一个长度为100000条指令的程序进行集成测试期间记录下下面的数据:
(a) 7月1日:集成测试开始,没有发现错误。
(b) 8月2日:总共改正100个错误,此时MTTF=0.4h
(c) 9月1日:总共改正300个错误,此时,MTTF=2h
据上列数据完成下列各题。
(1) 估计程序中的错误总数。
(2) 为使MTTF达到10h,必须测试和调试这个程序多长时间?
(3) 画出MTTF和测试时间τ之间的函数关系曲线。
10. 在测试一个长度为24000条指令的程序时,第一个月由甲、乙两名测试员各自独立测试这个程序。
经一个月测试后,甲发现并改正20个错误,使MTTF达到10h。
与此同时,乙发现24个错误,其中6个甲也发现了。
以后由甲一个人继续测试这个程序。
问:
(1) 刚开始测试时程序中总共有多少个潜藏的错误?
(2) 为使MTTF达到60h,必须再改正多少个错误?还需用多长测试时间?
(3) 画出MTTF与集成测试时间τ之间的函数关系曲线。