资源描述
2. 如果一个程序有两个输入数据,每个输入都是一个 32 位的二进制整数,那么这个程序有 多少个可能的输入?如果每微秒可进行一次测试,那么对所有可能的输入进行测试需要多长 时间?答:每个 32 位的二进制整数具有 232个可能的值,因此,具有两个整数输入的程序应该具有 264个可能的输入。每微秒可进行一次测试,即每秒可进行 106 个测试,因此,每天可进行的测试数为:606024106=8。641010这等于每年大约可进行 3.1391013 个测试。因为 210=1024103,所以 264=(210)6.41019.2.1019.23.139 1013105,所以做完全部测试将至少需要 105年(即 10 万年)。4设计下列伪码程序的语句覆盖和路径覆盖测试用例:STARTINPUT(A,B,C)IF A5THEN X=10ELSE X=1END IFIF B10THEN Y=20ELSE Y=2END IFIF C15THEN Z=30ELSE Z=3END IFPRINT(X,Y,Z)STOP答:(1) 语句覆盖的测试用例因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总 共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。下面是实现语句覆 盖的典型测试用例: 使 3 个判定表达式之值全为假输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=3 使 3 个判定表达式之值全为真输入:A=20,B=40,C=60预期的输出:X=10,Y=20,Z=30(2)路径覆盖的测试用例本程序共有 8 条可能的执行通路,为做到路径覆盖总共需要 8 组测试数据。下面是实 现路径覆盖的典型测试用例: 3 个判定表达式之值全为假输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=3 3 个判定表达式依次为假、假、真输入:A=1,B=1,C=60预期的输出:X=1,Y=2,Z=30 3 个判定表达式依次为假、真、假输入:A=1,B=40,C=1预期的输出:X=1,Y=20,Z=3 3 个判定表达式依次为假、真、真输入:A=1,B=40,C=60预期的输出:X=1,Y=20,Z=30 3 个判定表达式依次为真、假、假输入:A=20,B=1,C=1预期的输出:X=10,Y=2,Z=3 3 个判定表达式依次为真、假、真输入:A=20,B=1,C=60预期的输出:X=10,Y=2,Z=30 3 个判定表达式依次为真、真、假输入:A=20,B=40,C=1预期的输出:X=10,Y=20,Z=3 3 个判定表达式全为真输入:A=20,B=40,C=60预期的输出:X=10,Y=20,Z=306。 使用基本路径测试方法,设计测试下面列出的伪码程序的测试用例: 1: STARTINPUT(A,B,C,D)2: IF(A0)3: AND(B0)4: THEN X=A+B5: ELSE X=A-B6: END7: IF(CA)8: OR(DB)9: THEN Y=CD10: ELSE Y=C+D11: END12: PRINT(X,Y)STOP答:用基本路径测试方法设计测试用例的过程,有下述 4 个步骤: (1) 根据过程设计的结果画出流图与本题给出的伪码程序相对应的流图如图 4.1 所示。125 34678 910 1112图 4。1 与第 6 题伪码程序对应的流图(2)计算流图的环形复杂度使用下述 3 种方法中的任一种都可以算出图 4.1 所示流图的环形复杂度为 5。 该流图共有 15 条边,12 个结点,所以环形复杂度为15-12+2=5 该流图共有 5 个区域,因此环形复杂度为 5。 该流图中共有 4 个判定结点,因此环形复杂度为4+1=5(3)确定线性独立的路径的基本集合所谓线性独立路径是指至少引入程序的一个新语句集合或一个新条件的路径 ,用流图 术语来描述,独立路径至少包含一条在定义该路径之前不曾用过的边。使用基本路径测试法设计测试用例时,程序的环形复杂度决定了程序中独立路径的数 量,而且这个数值是确保程序中所有语句至少被执行一次所需的测试数量的上界。对于图 4.1 所示流图来说,由于它的环形复杂度为 5,因此共有 5 长独立路径.下面列 出了 5 条独立路径:路径 1:1-23-46791112路径 2:12-56791112路径 3:1-23567-9-11-12路径 4: 12346-78-9-1112路径 5:12346-7-8101112(4)设计可强制执行基本路径的测试用例 执行路径 1 (两个判定表达式全为真)输入:A=1,B=1,C=2,D=2(任意)预期的输出: X=2,Y=0 执行路径 2 (第一个判定表达式为假,第二个判定表达式为真)输入:A=0,B=1,C=2,D=0(任意)预期的输出: X=1,Y=2 执行路径 3 (第一个判定表达式为假,第二个判定表达式为真)输入:A=1,B=0,C=2,D=2(任意)预期的输出: X=1,Y=2 执行路径 4(两个判定表达式全为真)输入:A=1,B=1,C=0,D=1预期的输出: X=2,Y=1 执行路径 5 (第一个判定表达式为假,第二个判定表达式为真)输入:A=1,B=1,C=0,D=2(任意)预期的输出: X=2,Y=2第十章习题1下面叙述对一个计算机辅助设计(CAD)软件的需求:该 CAD 软件接受由工程师提供的二维或三维几何图形数据。工程师通过用户界面与 CAD 系统交互并控制它,该用户界面应该表现出良好的人机界面设计特征。几何图形数据及其他 支持信息都保存在一个 CAD 数据库中。开发必要的分析、设计模块,以产生所需要的设计结 果,这些输出将显示在各种不同的图形设备上。应该适当地设计软件,以便与外部设备交互 并控制它们。所用的外部设备包括鼠标、数字化扫描仪和激光打印机。要求:(1)进一步精化上述要求,把 CAD 软件的功能分解成若干个子功能;(2)用代码行技术估算每个子功能的规模;(3)用功能点技术估算每个子功能的规模;(4)从历史数据得知,开发这类系统的平均生产率是 620LOC/PM,如果软件工程师的平 均月工资是 8000 元,请估算开发本系统的工作量和成本.(5)如果从历史数据得知,开发这类系统的平均生产率是6.5FP/PM,请估算开发本系 统的工作量和成本.答:(1)习题中仅对需求做出了粗略描述,每项都都应该进一步扩展,以提供细节需求 和定量约束。例如,在开始估算软件规模之前,需要确定“良好的人机界面设计特征”的具 体含义,以及对“CAD 数据库”的规模和复杂度的具体需求。经过对需求的进一步精化,分解出软件的下述 7 个主要的子功能: 用户界面及控制机制; 二维几何图形分析; 三维几何图形分析; 数据库管理; 计算机图形显示机制; 外部设备控制; 设计分析模块。(2)为了用代码行技术估算软件规模,应该针对每个子功能都分别估计出下述 3 个值: 乐观值(即最小规模 a),悲观值(即最大规模 b)和可能值(即最可能规模 m).分别 算出这 3 种规模的平均值,然后用下式的加权平均法计算每个子功能规模,结果示于 表 10。4L =a +4 m +b 6表 10 。4 代码行技术的估算表功能 用户界面及控制机制 二维几何图形分析 三维几何图形分析 数据库管理 计算机图形显示机制 外部设备控制 设计分析模块乐观值1500380046001850310014006200可能值2200540069003200490021508500悲观值35006400860054507000260010200估计值2300530068003350495021008400估算出的总代码行数33200(3)使用功能点技术估算软件规模时,对软件的分解是基于信息域特性而不是基于软件 功能。表 10。5 给出了对 5 个信息域特征的估计值.为了计算未调整的功能点数,假设每个信 息域都是平均级的。接下来估计 14 个技术复杂性因素的值,并且计算 DI 的值,表 10.6 列出了得到的结果.表 10.5估算调整的功能点数功能乐观值可能值悲观值估计值特性系数 UFP 数输入数输出数查询数文件数 外部接口数20121642241522423022285324162424541079680884014总计数值318表 10.6估算复杂性因素数据通信因素估计值2因素 复杂的计算估计值5分布式数据处理 性能标准 高负荷硬件 高处理率 联机数据输入 终端用户效率 联机更新0424443可重用性安装方便操作方便可移植性可维护性DI4345549然后用下式计算技术复杂性因子:TCF0。650.01DI1.14最后计算功能点数FPUFPTCP311。14363(4) 用代码行估算,开发本系统的工件量为 33200/62054(人月)开发本系统的成本为800054432000(元)(5) 用功能点技术估算,开发本系统的工作量为363/6。556(人月)开发本系统的成本为800056448000(元)2计算下述的牙科诊所预约系统的未调整功能点数;王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待 员.王大夫需要一个软件系统来管理预约。当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下 的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议 的就诊时间,接待员将输入约定时间和病人的名字.系统将核实病人的名字并提供记录的病 人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约 诊治已经完成,如果必要的话会安排病人下一次再来。系统能够按病人姓名和按日期进行查询,能够显示记录的病人数据和预约信息.接待员 可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病 人的电话号码。接待员还可以打印出关于所有病人的每天和每周的工作安排。答:输入数据有“病人名”、“预约时间”、“完成的预约 和“取消预约” ,其中前 3 项链的复杂级别为“简单”,第 4 项的复杂度级别为“平均”。输出数据有“病情说明”(简单复杂度)、“预约登记表 、“支持细节”、“预约信息”、 “未就诊病人清单”(以上 4 项复杂度级别为“平均”)、“日安排”和“周安排”(以上 2 项 复杂度级别为“复杂”)。查询有“按名字查询”、“按日期查询”(这 2 项复杂度为“简单)、“核实病人”、“查 看预约登记表”和“查看完成的预约”(以上 3 项的复杂度为“平均)。文件有“病人记录”,其复杂度为“平均”级别。本系统无外部接口。最后,用下式计算未调整的功能点数UFP33141445272334110799假设你被指定为项目负责人,你的任务是开发一个应用系统,该系统类似于你的小 组以前做过的那些系统,只不过规模更大且更复杂一些.客户已经写出了完整的需求文档。 你将选用哪种项目组结构?为什么?你打算采用哪种软件过程模型?为什么?答:由于待开发的应用系统类似于以前做过的系统,开发人员已经积累了较丰富的经 验,没有多少技术难题需要攻克。为了减少通信开销,充分发挥技术骨干的作用,统一意志 统一行动,提高生产率,加快开发进度,项目组的组织结构以基于主程序员组的形式为宜。针对待开发的系统,客户已经写出了完整的需求文档,项目组又有开发类似系统的经 验,因此,可以采用广大软件工程师熟悉的瀑布模型来开发本系统。10一个程序能既正确又不可靠吗?请解释你的答案。答:所谓软件可靠性,是程序在给定的时间间隔内按照规格说明书的规定成功地运行的 概率。通常认为,软件可靠性既包含正确性又包含健壮性,也就是说,不仅在预定环境下程 序应该能正确地完成预期功能,而且在硬件发生故障、输入的数据无效或用户操作错误等意 外环境下,程序也应该能做出适当的响应。如果一个程序在预定环境下能够正确地完成预期的功能,但是在意外环境下不能做出适当的响应,则该程序就是既正确又不可靠。11为什么在开发软件的过程中变化既是必要的又是不可避免的?为什么必须进行配 置管理?答:在开发软件开发的过程中,下述原因会导致软件配置项发生变化;新的市场条件导致产品需求或业务规则发生变化。客户提出了新需求,要求修改信息系统产生的数据或产品提供的功能.企业改组或业务缩减,引起项目优先级或软件工程队伍结构变化。预算或进度限制,导致对目标系统的重新定义。发现了在软件开发过程的前期阶段所犯的错误,必须加以改正.但是,变化也很容易失去控制,如果不能适当地管理和管制变化,必然会造成混乱并 产生许多严重的错误。软件配置管理就是在软件的整个生命期内管理和控制变化的一组活 动。可以把软件配置管理看作是应用于整个软件过程的软件质量保证活动,是专门用来管理 和控制变化的软件质量保证活动。软件配置管理的目标是 :使变化更正确且更容易被适应 , 在必须变化时减少为此而花费的工作量.从上面的叙述可以知道,软件配置管理是十分必要 的。12CMM 的基本思想是什么?为什么要把能力成熟度划分成 5 个等级?答:CMM 的基本思想是,由于软件危机是因我们对软件过程管理不善而引起的,所以 新软件技术的运用并不会自动提高软件的生产率和质量,提高软件生产率和软件质量的关 键,是改进对软件过程的管理。能力成熟度模型有助于软件开发机构建立一个有规律的、成 熟的软件过程。对软件过程的改进不可能一蹴而就,只能是在完成一个又一个小的改进步骤基础上不 断进行的渐进过程.因此,CMM 把软件过程从无序到有序的进化过程分成 5 个阶段,并把这 些阶段排序,形成 5 个成熟度等级定义了一个有序的尺度,用以测量软件机构的软件过程 成熟度和评价其软件过程成熟度和评价其软件过程能力,这些等级还能帮助软件机构识别出 其现有的软件过程的缺陷,指出应该做哪些改进,并且帮助他们把应做的改进工作排出优先 次序。成熟度等级是妥善定义的向成熟软件机构前进途中的平台,每个成熟度等级都为软件 过程的继续改进提供了一个台阶。例:要开发一个计算机辅助设计软件,该 CAD 软件的需求如下:该 CAD 软件接受由工程师提供的二维或三维几何图形数据。工程师通过用户界面与 CAD 系统交互并控制它,该用户界面应该表现出良好的人机界面设计特征。几何图形数据及其他 支持信息都保存在一个 CAD 数据库中。开发必要的分析、设计模块,以产生所需要的设计结 果,这些输出将显示在各种不同的图形设备上.应该适当地设计软件,以便与外部设备交互 并控制它们.所用的外部设备包括鼠标、数字化扫描仪和激光打印机。要求:(1) 进一步精化上述要求,把 CAD 软件的功能分解成若干个子功能;(2) 用代码行技术估算每个子功能的规模;(3) 用功能点技术估算每个子功能的规模;(4) 从历史数据得知,开发这类系统的平均生产率是 620LOC/PM,如果软件工程师的 平均月工资是 8000 元,请估算开发本系统的工作量和成本.(5) 如果从历史数据得知,开发这类系统的平均生产率是 6.5FP/PM,请估算开发本系 统的工作量和成本.解析:(1)在需求描述中对需求描述比较粗略,每项都应该进一步扩展,以提供细节需求和定量约束.例如,在开始估算软件规模之前,需要确定“良好的人机界面设计特征” 的具体含义,以及对“CAD 数据库”的规模和复杂度的具体需求。经过对需求的进一步精化,分解出软件的下述 7 个主要的子功能:l 用户界面及控制机制;l 二维几何图形分析;l 三维几何图形分析;l 数据库管理;l 计算机图形显示机制;l 外部设备控制;l 设计分析模块。(2) 为了用代码行技术估算软件规模,应该针对每个子功能都分别估计出下述 3 个 值:乐观值(即最小规模 a),悲观值(即最大规模 b)和可能值(即最可能规模 m)。分别算出 这 3 种规模的平均值,然后用下式的加权平均法计算每个子功能规模,结果如表 95 所示。L =a +4 m +b 6表 9- 1 代码行技术的估算表功能 用户界面及控制机制 二维几何图形分析 三维几何图形分析 数据库管理 计算机图形显示机制 外部设备控制 设计分析模块乐观值1500380046001850310014006200可能值2200540069003200490021508500悲观值35006400860054507000260010200估计值2300530068003350495021008400估算出的总代码行数33200(3) 使用功能点技术估算软件规模时,对软件的分解是基于信息域特性而不是基于软件 功能.表 96 给出了对 5 个信息域特征的估计值。为了计算未调整的功能点数,假设每个信 息域都是平均级的。接下来估计 14 个技术复杂性因素的值,并且计算 DI 的值,表 97 列出了得到的结果。表 9 1 估算调整的功能点数功能乐观值可能值悲观值估计值特性系数 UFP 数输入数输出数查询数文件数 外部接口数20121642241522423022285324162424541079680884014总计数值318表 9 2 估算复杂性因素数据通信因素估计值2因素 复杂的计算估计值5分布式数据处理 性能标准 高负荷硬件 高处理率0424可重用性安装方便操作方便可移植性4345联机数据输入 终端用户效率 联机更新443可维护性DI549然后用下式计算技术复杂性因子:TCF0.650。01DI1.14最后计算功能点数FPUFPTCP311。14363(4) 用代码行估算,开发本系统的工件量为 33200/62054(人月)开发本系统的成本为800054432000(元)(5) 用功能点技术估算,开发本系统的工作量为 363/6。556(人月)开发本系统的成本为800056448000(元)
展开阅读全文