好文档 - 专业文书写作范文服务资料分享网站

软件工程项目管理习题解答

天下 分享 时间: 加入收藏 我要投稿 点赞

2. 如果一个程序有两个输入数据,每个输入都是一个32位的二进制整数,那么这个程序有多少个可能的输入?如果每微秒可进行一次测试,那么对所有可能的输入进行测试需要多长时间?

答:每个32位的二进制整数具有232个可能的值,因此,具有两个整数输入的程序应该具有264个可能的输入。

每微秒可进行一次测试,即每秒可进行106个测试,因此,每天可进行的测试数为:

60×60×24×106=8.64×1010

这等于每年大约可进行3.139×1013个测试。

因为210=1024≈103,所以264=(210)6.4≈1019.2。

1019.25?10,所以做完全部测试将至少需要105年(即10万年)。 133.139?104.设计下列伪码程序的语句覆盖和路径覆盖测试用例:

START

INPUT(A,B,C) IF A>5

THEN X=10 ELSE X=1 END IF IF B>10

THEN Y=20 ELSE Y=2 END IF IF C>15

THEN Z=30 ELSE Z=3 END IF

PRINT(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=30

6. 使用基本路径测试方法,设计测试下面列出的伪码程序的测试用例: 1: START

INPUT(A,B,C,D) 2: IF(A>0)

3: AND(B>0) 4: THEN X=A+B 5: ELSE X=A-B 6: END 7: IF(C>A) 8: OR(D>B) 9: THEN Y=C-D 10: ELSE Y=C+D 11: END

12: PRINT(X,Y) STOP

答:用基本路径测试方法设计测试用例的过程,有下述4个步骤: (1) 根据过程设计的结果画出流图

与本题给出的伪码程序相对应的流图如图4.1所示。

125346789101112 图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—2—3—4—6—7—9—11—12 路径2:1—2—5—6—7—9—11—12 路径3:1—2—3—5—6—7—9—11—12 路径4: 1—2—3—4—6—7—8—9—11—12 路径5:1—2—3—4—6—7—8—10—11—12 (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.4

L?a?4m?b6

表10.4 代码行技术的估算表 功能 用户界面及控制机制 二维几何图形分析 三维几何图形分析 数据库管理 计算机图形显示机制 外部设备控制 设计分析模块 估算出的总代码行数 乐观值 1500 3800 4600 1850 3100 1400 6200 可能值 2200 5400 6900 3200 4900 2150 8500 悲观值 3500 6400 8600 5450 7000 2600 10200 估计值 2300 5300 6800 3350 4950 2100 8400 33200 (3)使用功能点技术估算软件规模时,对软件的分解是基于信息域特性而不是基于软件功能。表10.5给出了对5个信息域特征的估计值。为了计算未调整的功能点数,假设每个信息域都是平均级的。

接下来估计14个技术复杂性因素的值,并且计算DI的值,表10.6 列出了得到的结果。

表10.5 估算调整的功能点数

功能 乐观值 可能值 悲观值 估计值 特性系数 UFP数 输入数 输出数 查询数 文件数 外部接口数 总计数值

20 12 16 4 2 24 15 22 4 2 30 22 28 5 3 24 16 2 4 2 4 5 4 10 7 96 80 88 40 14 318 表10.6 估算复杂性因素

因 素 估计值 因 素 估计值 数据通信 分布式数据处理 性能标准 高负荷硬件 高处理率 联机数据输入 终端用户效率 联机更新

2 0 4 2 4 4 4 3 复杂的计算 可重用性 安装方便 操作方便 可移植性 可维护性 DI 5 4 3 4 5 5 49 然后用下式计算技术复杂性因子: TCF=0.65+0.01×DI =1.14 最后计算功能点数 FP=UFP×TCP =31×1.14 =363

(4) 用代码行估算,开发本系统的工件量为 E=33200/620

≈54(人月)

软件工程项目管理习题解答

2.如果一个程序有两个输入数据,每个输入都是一个32位的二进制整数,那么这个程序有多少个可能的输入?如果每微秒可进行一次测试,那么对所有可能的输入进行测试需要多长时间?答:每个32位的二进制整数具有232个可能的值,因此,具有两个整数输入的程序应该具有264个可能的输入。每微秒可进行一次测试,即每秒可进行106个测试,因此,每天可进行的测试数为:<
推荐度:
点击下载文档文档为doc格式
3q0o0011ox1is530855j3blzb1bw3200hnc
领取福利

微信扫码领取福利

微信扫码分享