软件工程导论第五版 第七章
《软件工程导论》张海潘第五版清华课后答案
了解结构化开发方法的核心概念和工具,提供 对练习问题的参考答案。
面向对象开发方法
第五章
深入探讨面向对象开发方法的理论和实践,学习如何设计和构建强大的面向 对象软件系统。
课后答案
第一章答案
掌握软件工程概述的关键知识点,提供练习题 的答案以加深理解。
第三章答案
学习需求分析和建模的实际应用,提供对课后 习题的详细解答。
第二章答案
了解软件生命周期的各个阶段,掌握解决实践 问题的方法和技巧。
《软件工程导论》张海潘 第五版清华课后答案
欢迎来到《软件工程导论》张海潘第五版清华课后答案的世界。让我们一起 探索这门令人兴奋的学科,并发现其中的奥秘和乐趣。
课本信息
书名:《软件工程导论》
作者:张海潘
版本:第五版
出版社:清华大学出版社
作者简介
张海潘
张海潘是一位资深的软件工程教授,拥有丰富的教学和研究经验。他对软件 开发过程和方法论有着深入的研究,并致力于培养下一代的软件工程师。
章节导引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.需求分析的描述工具有哪些?有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier 图、IPO图和需求描述语言等。
2.需求分析的基本任务是什么?准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。
3.怎样建立目标系统的逻辑模型?要经过哪些步骤?建立目标系统的逻辑模型的过程也就是数据流图的分解过程。
它的导出过程如图:10.某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。
房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理。
(1) 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置。
在进行分房时,从空房文件中读出空房信息,如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号的信息,并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租,并将算出的房租写到房租文件中。
(2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。
(3) 如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件中查找属于该等级的空房,退掉原住房,再进行与分房类似的处理。
(4) 住户可以向系统查询目前分房的阀值分数,居住某类房屋的条件,某房号的单位面积及房租等信息。
房产科可以要求系统打印住房情况的统计表,或更改某类房屋的居住条件、单位面积和房租等。
用数据流图描绘该系统的功能需求;在数据字典中给出主要的数据流、文件和加工说明。
第四章总体设计习题答案9. 比较层次方框图与结构图是的异同?(1) 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构。
软件工程(第五版)--习题及答案--第七章
一、选择题1、汽车有一个发动机,汽车和发动机之间的关系是(B)关系。
A、一般具体B、整体部分C、分类关系D、is a2、火车是一种陆上交通工具,火车和陆上交通工具之间的关系是(D)关系。
A、组装B、整体部分C、has aD、一般具体3、面向对象程序设计语言不同于其他语言的最主要特点是(C)。
A、模块B、抽象性C、继承性D、共享性4、软件部件的内部实现与外部可访问性分离,这是指软件的(A)。
A、封装性B、抽象性C、继承性D、共享性5、面向对象分析阶段建立的三个模型中,核心模型是(C)模型。
A、功能B、动态C、对象D、分析6、对象模型的描述工具是(C)。
A、状态图B、数据流图C、对象图D、结构图7、动态模型的描述工具是(A)。
A、状态图B、结构图C、对象图D、流程图8、在只有单重继承的类层次结构中,类层次结构是(A)层次结构。
A、树型B、网状型C、星型D、环型9、(C)模型表示了对象的互相行为。
A、功能B、动态C、对象D、分析10、在确定类时,所有(A)是候选的类。
A、名词B、形容词C、动词D、代词11、面向对象分析的原则不包括(C)。
A、抽象B、封装C、依赖D、继承12、常用动词和动词词组来表示(C)。
A、对象B、类C、关联D、属性13、在确定属性时,所有(B)是候选的属性。
A、名词B、修饰性名词词组C、动词D、词组14、在面向对象方法中,信息隐藏是通过对象的(A)来实现的。
A、封装性B、分类性C、继承性D、共享性15、面向对象设计的准则不包括(D)。
A、模块化B、抽象C、信息隐藏D、强耦合二、简答题1、面向对象分析通常要建立哪三种模型?它们分别描述系统的哪些方面?答:面向对象分析通常要建立三种模型,分别是对象模型、动态模型和功能模型。
其中:对象模型描述系统的数据结构,它是用来描述系统包含的对象及对象之间关系的模型;动态模型描述系统的控制结构,它是用来确定各个对象之间交互及整体的控制结构的模型;功能模型描述系统的功能,它是用来描述系统要实现的功能的模型。
软件工程导论(第五版)课后习题答案
《软件工程导论》课后习题答案第一章软件工程概论1-11.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.软件危机有那些典型表现?(1) 对软件开发成本和进度的估计常常很不准确。
(2) 用户对“已完成的”软件系统不满意的现象经常发生。
(3) 软件产品的质量往往靠不住。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
(6) 软件成本在计算机系统总成本中所占的比例逐年上升。
(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
3.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
4.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
软件工程导论第五版复习重点
•5.2 设计原理
5.2.1 模块化
模块是程序对象有名字的集合。例如,过程、函数、子程 序、宏等,是构成软件系统结构的基本元素。
模块化就是将系统划分为若干个模块,每个模块完成一个 子功能。模块化的目的是将系统“分而治之”,模块化能够 降低问题的复杂性,使软件结构清晰,易阅读、易理解,易 于测试和调试,因而也有助于提高软件的可靠性。
•弱
•强
•语
•判
•条
•判 •定
•条 •件
•句
•定
•件
•条
•组
•覆
•覆
•覆
•件
•合
•盖
•盖
•盖
•覆 •盖
•覆 •盖
软件工程导论第五版复习重点
•白盒法常用的覆盖标准
•① 语句覆盖: 选择足够的测试用例,使得程序中每个语 句至少都能被执行一次。 •② 判定覆盖: 执行足够的测试用例,使得程序中每个判 定至少都获得一次“真”值和“假”值。 •③ 条件覆盖:执行足够的测试用例,使得判定中的每个 条件获得各种可能的结果。 •④ 判定/条件覆盖: 执行足够的测试用例,使得判定中 每个条件取到各种可能的值,并使每个判定取到各种可能 的结果。 •⑤ 条件组合覆盖: 执行足够的例子,使得每个判定中条 件的各种可能组合都至少出现一次。
软件工程导论第五版复习重点
第5章 总体设计
•1、在设计过程中,总体设计一般有哪两个主 要阶段组成?P81 •2、什么模块化?模块独立性包含哪些内容? 度量准则是什么?P85—P89 •3、启发规则有哪些?P90—P92 •4、描绘软件结构的图形工具P92-P94 •5、面向数据流的设计方法P95—P102
能。
•⑵逻辑 即描述模块内部怎么做。
软件工程导论----张海藩(第五版)课后习(考研专用).doc
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件工程导论_第七章
4. 应制定测试计划并严格执行,排除随意性。 5. 长 期 保 留 测 试 用 例 , 因 为 以 后 还 要 用 。 (例修改后或以后的维修) 6.对发现错误较多的程序段(局部原理), 应进行更深入的测试。 7.错误中的80%很可能是程序中的20%的模块 造成的。 8.程序员避免测试自己的程序,①心理状 态的障碍。②自己错误理解,应由别人或 另外机构来测试。
– 1)输入操作步骤和输入格式尽量简单。
– 2) 应检查输入数据的合法性、有效性、报告 必要的输入状态信息及错误信息。 – 3)交互式输入时,提供可用的选择和
边界值。
4)当程序设计语言有严格的格式要求时, 应保持输入格式的一致性。 5)输出数据表格化、图形化。 输入/输出风格还受其他因素的影响, 如输入、输出设备,用户经验、通信 环境等。
(一)程序内部的文档 1. 符号名的命名:
• 即模块名,变量名、常量名、子程序名、 数量区名、缓冲区名等。这是名字要求; ①能够看其名知意,有一定实际意义。如 sum,total,average等等 ②不应限制名字的长度但不是越长越好,过 长增加了工作量。 ③必要使用缩写名字,但缩写规则要一致。
2.
7)尽量使用整数运算和布尔表达式。 8)在效率是决定性因素的应用领域,尽量使用有良 好优化特性的编译程序,以自动生成高效目标代 码。 2、 存储器效率 1)在大型计算机中必须考虑操作系统页式调度的特 点。 2)在微处理机中如果要求使用最少的存储单元,则 应选用有紧缩存储器特性的编译程序,在非常必 要时可以使用汇编语言。 3)提高执行效率的技术通常也能提高存储器效率。 提高存储器效率的关键同样是“简单”。
1、 程序运行时间 源程序的效率直接由详细设计阶段确定的算法 的效率决定,但是,写程序的风格也能对程序的 执行速度和存储器要求产生影响。在把详细设计 结果翻译成程序时,可以应用下述规则: 1)写程序之前先简化算术的和逻辑的表达式; 2)仔细研究嵌套的循环,以确定是否有语句可以从 内层往外移; 3)尽量避免使用多维数组; 4)尽量避免使用指针和复杂的库表; 5)使用执行时间短的算术运算; 6)不要混合使用不同的数据类型;
《软件工程》(第五版)习题参考答案
《软件工程》(第五版)习题参考答案
第1章 一、判断题 1、(×)软件的维护与硬件维护本质上是相同的。 2、(√)软件在运行和使用中也存在退化问题。 3、(×)软件危机的产生主要是因为程序设计人员使用了不适 当的程序设计语言。 4、(√)软件同其他事物一样,有孕育、诞生、成长、成熟和 衰亡的生存过程。 5、(×)文字处理软件 Word 属于系统软件。应用软件 6、(√)原型是软件的一个早期可运行的版本,它反映最终系 统的部分重要特性。 7、(√)软件开发过程中,一个错误发现得越晚,为改正它所 付出的代价就越大。 8、(×)快速原型模型对软件开发人员的水平要求不高。 9、(√)喷泉模型适合于面向对象的软件开发。 10、(×)面向对象开发方法的主要缺点是在适应需求变化方面 不够灵活。 二、选择题 1、软件是一种(C)。 A、程序 B、数据
D、合同文档 14、结构化分析方法是以数据流图、(D)和加工说明等描述工 具,即用直观的图和简洁的语言来描述软件系统模型。 A、DFD 图 B、PAD 图 C、IPO 图 D、DD 15、软件需求分析阶段的工作,可以分为四个方面:需求获取、 需求分析、编写需求规格说明书以及(B)。 A、阶段性报告 B、需求评估 C、总结 D、都不正确 16、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一 些特定的图符构成。下面图符名称标识的图符不属于数据流图合 法图符的是(A)。 A、控制流 B、加工 C、数据存储 D、源点和终点 17、DFD 用于描述系统的(D)。 A、数据结构
软件工程导论第5版
1.1 软件危机
计算机系统发展的四个阶段:
计算机系统发展的早期阶段(20世纪60年代中期以前) 大多数人把软件看成是不需预先计划的事情
计算机系统发展的第二阶段(从60年代中期到70年代中期) 主要特点是软件产品的使用和“软件作坊”的出现
计算机系统发展的第三阶段(从70年代中期到80年代中期) 主要特点是微处理器的出现和应用,计算机应用大众化
1.2 软件工程
这7条原理是互相独立,缺一不可的。然而这7 条原理又是相当完备的,在此之前已经提出的100多 条软件工程原理都可以由这7条原理的任意组合蕴含 或派生。
下面简要介绍软件工程的7条基本原理。
1. 用分阶段的生命周期计划严格管理
有人经统计发现,在不成功的软件项目中有一 半左右是由于计划不周造成的,可见把建立完善的计 划作为第一条基本原理是吸取了前人的教训而提出来 的。
1.2.2 软件工程的基本原理
自从1968年在联邦德国召开的国际会议上正式 提出并使用了“软件工程”这个术语以来,研究软件 工程的专家学者们陆续提出了100多条关于软件工程 的准则或“信条”。著名的软件工程专家B.W.Boehm 综合这些学者们的意见并总结了TRW公司多年开发软 件的经验,于1983年在一篇论文中提出了软件工程的 7条基本原理。他认为这7条原理是确保软件产品质量 和开发效率的最小集合。
1.2 软件工程
3. 实行严格的产品控制:不随意改变需求
当改变需求时,为了保持软件各个配置成分的 一致性,必须实行严格的产品控制,其中主要是实行 基准配置管理,也称为变动控制:一切有关修改软件 的建议,特别是涉及到对基准配置的修改建议,都必 须按照严格的规程进行评审,获得批准以后才能实施 修改。绝对不能谁想修改软件,就随意进行修改。
- 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与集成测试时间τ之间的函数关系曲线。