软件工程导论作业第一章 - 图文(2)

2019-09-01 15:16

f.公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就是公共耦合。公共的数据环境可以是全局的数据结构,共享的通信区,内存的公共覆盖区等。如几个模块对同一个数据库的查询就属于这种耦合。公共耦合可以分为松散的公共耦合和紧密的公共耦合,其中松散的公共耦合是单向操作,如两个或多个模块对同一个文件的读操作;而紧密的公共耦合是双向的操作,如两个或多个模块对同一文件的读写操作。下面用图表示松散的和紧密的公共耦合。

g.内容耦合。即有下列情况时即出现内容耦合。 (1)一个模块访问另一个模块数据;

(2)一个模块不通过正常入口而转到另一个模块的内部; (3)两个模块有一部分代码重叠; (4)一个模块有多个入口。

2、 为每种类型的模块内聚举一个具体例子。 答:内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化的自然扩展,一般模块的内聚性分为7种,它们的关系如下图示:

下面举例说明各种内聚的情况

a. 偶然内聚。即模块内各部分之间没有联系,或者即使有联系也很松散,这种即为偶然内聚,它是

内聚程度最低的模块。如一些没有任何联系的语句可能在许多模块中重复多次,程序员为了节省存储,把它们抽出来组成一个新的模块,这个模块就是偶然内聚模块,例如C语言中的#define TRYODBCC??

b.逻辑内聚(Logical Cohesion)即这种模块把几种功能组合在一起,每次调用时,由传送给模块的

判定参数来确定该模块应执行哪一种功能。如根据输入的控制信息,或从文件中读入一个记录,或向文件写出一个记录。

c.时间内聚(Classical Cohesion)这种模块大多数为多功能模块,但模块的各人功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行,例如初始化模块和终止模块。

d.过程内聚(Procedural Cohesion)即一个模块内的处理是相关的,而且必须以特定次序执行,则这个模块称为过程内聚模块。例如我们把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。 e.通信内聚(Communication Cohesion)如果一个模块内部各功能部分都使用可相同的数据输入,

或产生了可相同的数据输入,或产生了可相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的。

f.顺序内聚,即一个模块内处理元素和同一功能紧密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据据作为下一处理元素的输入数据)如在对员工加工资的数据库操作中,读取数据和更新数据即具有顺序内聚的关系。 g.功能内聚(Functional Cohesion)即模块内部所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚,功能内聚是最高程度的内聚。

第六章习题 1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作? 答:转化如下:

K = 1

DO WHILE (条件 .AND. K.EQ.1)

程序块1 K=K+1

END DO

DO WHILE ( (.NOT. 条件) .AND. K.EQ.1)

程序块2 K=K+1

END DO

2.假设允许使用SEQUENCE和IF_THEN_ELSE两种控制结构,怎样利用它们完成DO_WHILE操作?

答:转化如下;

label: IF (条件) THEN

程序块 GOTO label

ELSE

程序块

END IF

3.画出下列伪码程序的程序流程图和盒图: START IF p THEN

WHILE q DO f

END DO

ELSE

BLOCK

g n

END BLOCK END IF

STOP 答:(1)流程图如图6-1所示:

7.某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。如果交易总金额少于1000元,则基本手续费为交易金额的8.4%;如果交易总金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;

如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。当每股售价超过25元时,如果交易的股数零散(即,不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。 要求:

(1) 用判定表表示手续费的计算方法; (2) 用判定树表示手续费的计算方法

判定表的每一列是一条计算规则。例如,第1列(规则l)规定,当交易总金额P少于1,000元,且每股售价Q低于l4元,且交易的股数n是l00的倍数时,给经纪人的手续费为: (1+0.05)×0.084P

第16列(规则l6)表明,当交易总金额P超过l0,000元,且每股售价Q在14元到25元之间,且交易的股数n不是l00的倍数时,手续费为: (1+0.06)X(0.04P+134)

图6-7 判定树 8.画出下列伪码程序的流图,计算它的环形复杂度。你觉得这个程序的逻辑有什么问题吗? C EXAMPLE

LOOP:DO WHILE X>0

A=B+1 IF A>10

THEN X=A

ELSE Y=Z END IF

IF Y<5

THEN PRINT X,Y ELSE IF Y=2

THEN GOTO LOOP

ELSE C=3 END IF

END IF G=H+R END DO IF F>0

THEN PRINT G ELSE PRINT K END IF STOP

环形复杂度V(G)=流图中的区域数

=流图中判定结点数目+1=6+1=7 =节点数E-弧数n+2=19-12+1=7

(2)该算法问题在于控制最外层循环的变量Z不仅没有经过初始化,并且在该循环内部没有任何有可能该变Z的语句。因此,该段代码中的WHILE循环部分代码要么不会执行,要么可能出现死循环。 第七章习题

7-4什么是模块测试和集成测试?它们各有什么特点?

答:模块测试是对每个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检查模块控制结构中的特定路径并发现最大数量的错误。其特点是:主要应用白盒测试的技术,对多个模块的测试可以并发的进行。

集成测试是把模块装配在一起形成完整的软件包,在装配的同时进行测试。特点是:可能发生接口问题。

为什么有了白盒测试还要有黑盒测试?

白盒测试发现程序的隐患,内存泄漏,误差累计问题,黑盒测试在这方面存在严重的不足。

黑盒测试只有测试软件外部的表现,即使软件的输入、输出都是正确的,都不能说明软件是正确的,因为程序有可能用错误的运算方式得出正确的结果。 白盒测试优点:

(1)可构成测试数据使特定程序部分得到测试。 (2)有一定的充分性度量手段

(3)可获得较多工具支持。

缺点:(1)不易生成测试数据

(2)无法对未实现规格说明的部分进行测试

(3)工作量大,通常只用于单元测试,有应用局限。 黑盒测试优点:

(1)适用于各阶段测试 (2)从产品功能角度测试

(3)容易入手生成测试数据。

缺点:(1)某些代码得不到测试

(2)如果规则说明有误则无法发现 (3)不易进行充分性测试。

7—8.对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,


软件工程导论作业第一章 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:地方国家权力机关应对突发事件的作用

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: