习题课2软件工程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

④ 过程内聚
⑤ 巧合内聚 ⑥ 时间内聚
⑦ 逻辑内聚
A 5 B 7 C 3 D 4 ??2 E 1
4-2 从供选择的答案中选出正确的答案填入下面的( )中。
块间联系和块内联系是评价程序模块结构质量的重要标准。联系的方式、共用信息的 作用、共用信息的数量和接口的( A )等因素决定了块间联系的大小。在块内联 系中,( B )的块内联系最强。
(1)第一级分解(建立初始SC框架) 设计顶层和第一层模块
传送信息
MC
c,e c,e u,w u,w
MA
MT
ME
第一级分解后的SC(另一种画法)
MC
pr
u,w
c
e
e c,p r
w
w,u
MA1 MA2 Q P R ME1 ME2
变换分析设计方法步骤:
(2)第二级分解(分解SC各分支) 自顶向下分解,设计出每个 分支的中、下层模块
由于概要设计建立起整个系统的体系结构框架,并给出了系统中的 全局数据结构和数据库接口,人机接口,与其它硬、软件的接口。此外还 从系统全局的角度,考虑处理方式、运行方式、容错方式、以及系统维护 等方面的问题,并给出了度量和评价软件质量的方法,所以它奠定了整个 系统实现的基础。没有概要设计,直接考虑程序设计,就不能从全局把握 软件系统的结构和质量,实现活动处于一种无序状态,程序结构划分不合 理,导致系统处于一种不稳定的状态,稍一做改动就会失败。所以,不能 没有概要设计。
(1) 的功能是对换A[I] 与A[T] 的内容。等效的程序段可以是:
WORK = A[T]; A[T] = A[I]; A[I] = WORK;
(2) 的功能是建立一个单位矩阵V。等效的程序段可以是:
for ( i = 1; i <= n; i ++ )
for ( j = 1; j <= n; j ++ )
解:①划分等价类并编号: 划分成 3 个有效等价类,7 个无效等价类, 如表5 - 3所示。
②为合理等价类设计测试用例,对于表中编号为1, 5, 8对应的 3 个合理等价类, 用一个测试用例覆盖。
③ 为每一个不合理等价类至少设计一个测试用例:
测试数据
期望结果
覆盖范围
199002 输入有效 1,5,8
可由任意行组成,每行包括学生的姓名、
性别、年龄和学号。
学生名册
表头
表名
字段名
姓名
表体 行
性别
年龄
学号
5-4. 根据伪码画出N-S图。
START
IF A THEN
X1
DO UNTIL B
ELSE
X2
Y
T
END IF
Z
X1
STOP
A
F
X2
DO UNTIL B
Y
Z
5-5. 根据伪码画出PAD图。 START SWITCH P CASE 1: A; break; CASE 2: B; break; CASE 3: C; break; Default; STOP
6-3.某一报表处理系统,要求用户输入处理报表的日期。 假设日期限制在1990年1月至1999年 12月,即系统只能对该段时期内的报表进行处理。如果用户输入的日期不在此范围内,则显 示输入错误信息。该系统规定日期由年、月的 6 位数字字符组成,前 4 位代表年,后两位代 表月。现用等价类划分法设计测试用例,来测试程序的“日期检查功能”。
4-4说明并比较概要设计说明书与需求分析说明书的内容。 (1)两个说明书都包括引言,内容基本相同; (2)任务概述部分概要设计说明比需求说明增加了需求概述; (3)需求说明主要通过静态、动态数据,数据库描述,数据字典和数
据采集等内容进行数据描述;
(4)需求说明中的主要部分是功能要求、性能要求、运行需求以及其 他要求,它的目的是全面地、精确地描述了系统要“做什么”。需求 说明书中还可能包括数据流图、数据字典、IPO图等描述的系统逻辑 模型。
WORK = A[T]; A[T] = A[I]; A[I] = WORK;
就能让读者一目了然。
对于(2),除法运算(/)在除数和被除数都是整型量时,其结果只取整数部分,而得到整型量。因此, i / j为0, 当i < j时 j / i为0, 当j < i时 得到的数组 V[i][j] = ( i/j ) * ( j/i ) = 0,当i ≠ j时 ( i/j ) * ( j/i ) = 1,当i = j时 这样得到的结果V是一个单位矩阵。如果直截了当地说明作者的意图:
模块之间的耦合(块间联系)和模块的内聚(块内联系) 是评价程序模块结构质量的重要标准。联系的方式、共用 信息的作用、共用信息的数量和接口的简单性等因素决定 了块间联系的大小。在块内联系中,以功能内聚模块的块 内联系最强。
SD方法的总的原则是使每个模块只做一件事,就是说, 只执行一个功能。模块之间尽可能传送简单的数据型参数。 模块要通过标准调用语句调用其它模块,不要直接引用另 一个模块内部的数据。同时模块之间传送的参数应尽量少。 此外,SD方法还提出了判定的作用范围和模块的控制范 围等概念。SD方法认为,模块的作用范围应该是其控制 范围的子集。
(1) A[I] = A[I] + A[T];
(2) for ( i = 1; i <= n; i ++ )
A[T] = A[I] - A[T];
for ( j = 1; j <= n; j ++ )
A[I] = A[I] - A[T];
V[i][j] = ( i / j ) * ( j / i );
生过话费拖欠,并未能在规定时间内补清欠款,无论每月话费多少均
不能获得优惠卡。
6-2根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。
“一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序 要打印出信息,说明这个三角形是三边不等的、是等腰的、还是等边的。”
解:设三角形的三条边分别为A, B, C。如果它们能够构成三角形的三条边,必 需满足:A > 0,B > 0,C > 0,且A + B > C,B + C > A,A + C > B。如果是等腰的,还要判断是否A = B,或B = C,或A = C。对于等边的, 则需判断是否A = B,且B = C,且A = C。 列出等价类表:
=1 A
=2
P
B
=3
C
5-6.移动电信公司为促进业务的发展发行各种优惠卡,其中包括钻石卡、 金卡、银卡3种,用户可以依据其信用度享受不同额度的透支。其中 钻石卡、金卡和银卡允许透支的额度分别为800元、500元和100 元。发卡的规则为:从未发生过话费拖欠,且每月通话费在500元 (含)以上者可获得钻石卡,每月通话费在200元(含)以上者可获 得金卡,每月通话费在100元(含)以上者可获得银卡;发生过话费 拖欠,能在规定的时间内缴清欠款,且每月通话费在300元(含)以 上者可获得金卡,每月通话费在200元(含)以上者可获得银卡;发
if ( i == j ) V[i][j] = 1; else V[i][j] = 0;
让读者可以很容易地理解。所以,在程序设计时,应当首先考虑清晰性,不要玩技巧。
5-3.用Jackson图表示下图所示的二维表格:
学生名册
该学生名册由表头和表体两部分组成。 姓名
性别
年龄
学号
其中表头又顺序包括表名和字段名。表体
软件工程习题课
4-1 从供选择的答案中选出正确的答案填入下列叙述中的( ) 内。
模块内聚性用于衡量模块内部各成份之间彼此结合的紧密程度。
(1) 一组语句在程序中多处出现,为了节省内存空间把这些语句放在一个模块中, 该模块的内聚性是( A )的。
(2) 将几个逻辑上相似的成分放在同一个模块中,通过模块入口处的一个判断决定 执行哪一个功能。该模块的内聚性是( B )的。
v uvv
V U to V Write V
(1)
(2)
中心加工分支的分解
MT
e
p
c,p
r
r
u,w
Q
P
R
5-1 下图是使用Basic语言编写的一个打印A,B,C三数中最小者的程序的流程图。其 中出现了6个GOTO语句,一个向前,5个向后,程序可读性很差。 if ( A < B ) goto 120; if ( B < C ) goto 110; 100 print C; goto 140; 110 print B; goto 140; 120 if ( A < C ) goto 130; goto 100; 130 print A;
(5)概要设计说明则对系统的总体结构、各个接口、数据结构、运行、 出错、安全、维护进行具体设计,它的目的是描述系统“怎样做”, 往往包含了各模块的处理说明和接口说明以及系统结构图。
(6)概要设计说明是建立在需求说明的基础上的。
4-5设计SC图
根据下图所示的变换型DFD图,用面向数据流的设计方法设 计出SC图。
分析:理清程序流程图中每一条执行路径,适当利用复合的条件测试于判断语句,对每一 个最终的打印处理,保留一个分支进入它。这样可以消除众多的GOTO语句,甚至可 以消除嵌套的判断语句结构。这种程序结构清晰,可读性好。
5-2. 试说明下面的两个程序段的功能是什么?可否用另一些等效的程序段来代替它,以提高其可读性。
SD方法的总的原则是使每个模块执行( C )功能,模块间传送( D )参数,模块 通过( E )语句调用其它模块,而且模块间传送的参数应尽量( F )。
此外,SD方法还提出了判定的作用范围和模块的控制范围等概念。SD方法认为, ( G )应该是( H )的子集。
供选择的答案:
A:① 友好性 ② 健壮性
140
试利用基本控制结构,将程序中的GOTO语句消去。
1.答案:使用if - then - else结构化构造,则上述程序段可改成如下形式。
if ( A < B and A < C ) then print A
else if ( A >= B and B < C ) then print B
else print C;
③ 简单性
④ 安全性
B:① 巧合内聚 ② 功能内聚
③ 通信内聚
④ 信息内聚
C:① 一个
② 多个
D:① 数据型 ② 控制型
③ 混合型
E:① 直接引用 ② 标准调用
③ 中断
④ 宏调用
F:① 少
②多
G H:① 作用范围
② 控制范围
A. ③, B. ②, C. ①, D. ①, E. ②,
F. ①, G. ①, H. ②
99MAY
输入无效
2
19995
输入无效
3
1999005
输入无效
4
198912
输入无效
6
200001
输入无效
7
199900
输入无效
9
199913
输入无效
10
输入等价类 报表日期的 类型和长度
年份范围
月份范围ቤተ መጻሕፍቲ ባይዱ
合理等价类 1. 6位数字字符 5.1990~1999 8.1~12
(3) 模块中所有成分引用共同的数据,该模块的内聚性是( C )的。
(4) 模块内的某成份的输出是另一些成份的输入,该模块的内聚性是( D )的。
(5) 模块中所有成份结合起来完全一项任务,该模块的内聚性是( E )的。它具 有简明的外部界面,由它构成的软件易于理解、测试和维护。
供选择的答案:
A E:① 功能内聚 ② 信息内聚 ??(顺序) ③ 通信内聚
if ( i == j ) V[i][j] = 1;
else V[i][j] = 0;
分析:阅读这两段程序,读者可能不易看懂,有时还需用实际数据试验一下。对于(1),如果我们给A[I] 赋 值3,给A[T] 赋值5,在运算后发现A[I] 中变成了5,A[T] 中变成了3。这段程序就是交换A[I] 和 A[T] 中的内容。目的是为了节省一个工作单元。如果改一下:
4-3 举例说明你对概要设计与详细设计的理解。有不需要概要设计的情况吗?
软件设计是一个把软件需求变换成软件表示的过程。最初这种表示 只是描绘出软件的总的框架,然后进一步细化,在此框架中填入细节,把 它加工成在程序细节上非常接近于源程序的软件表示。正因为如此,所以 从工程管理的角度来看,软件设计分两步完成。首先做概要设计,将软件 需求转化为数据结构和软件的系统结构。然后是详细设计,即过程设计。 通过对结构表示进行细化,得到软件的详细的数据结构和算法。
c,e
输 入
c MA e


C
E
的b
d

B
D
解a
(1)
A
c,e
输 入
c MA e

支 的
Get C
bb
c
Get E
dd
e
分 Get B B to C Read D D to E
解a
(2)
a
b
Read A A to B

w,u
w,u
出 ME
ME
分w
uw
u

的 W U Write W Put U
分 解
相关文档
最新文档