|
|
|
|
移动端

3.3.1 集合之间的关系

《软件测试:一个软件工艺师的方法(原书第4版)》第3章面向测试人员的离散数学,本章和下一章将给出测试人员所需的数学知识。还是把测试人员类比成技艺师,此处介绍的各种数学方法就是工具,测试技师应该是知道如何用好这些工具的。本节为大家介绍集合之间的关系。

作者:马琳/李海峰 译来源:机械工业出版社|2017-11-15 17:46

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

3.3 关系

函数是关系的特例。函数和关系都是笛卡儿积的子集,但对于函数来说,有“表现良好”的约束,以保证一个定义域元素不会对应于多个值域元素。在通常使用时,人们认同这种约束:在说到某个事物是其他事物的“函数”时,实际上是说有某种确定的关系存在。并不是所有的关系都严格地成为函数。比如,病人集合和医生集合之间的对应关系,这就不是函数,一个病人可能接受多个医生的治疗,一个医生又会诊治多个病人,显然这是一种多对多的映射。

3.3.1 集合之间的关系

定义

给定集合A和B,其关系R是笛卡儿积A×B的一个子集。

有两种常见的关系表达方法。如果想在整体上表述关系,通常仅记为R ? A×B;而对于具体元素ai ∈ A,bi ∈ B,它们之间的关系记为ai R bi。很多数学著作中都忽略了对关系的详细论述,但关系对我们来说更重要,因为它是数据建模和面向对象分析的基础。

接下来要介绍一个广泛使用的概念——势。回想前面对集合势的定义,是指集合中元素的个数。因为关系也是集合,因此你可能会认为关系的势是指集合R ? A×B中有序偶对的个数。但实际上关系的势并不是这样定义的。

定义

给定集合A、B和关系R ? A×B,关系R的势为:

当且仅当R是A到B的一对一映射函数,关系具有一对一势;

当且仅当R是A到B的多对一映射函数,关系具有多对一势;

当且仅当至少存在一个元素a ∈ A同时出现在R中的两个有序偶对中,即有<a,bi> ∈ R和< a,bj > ∈ R,关系具有一对多势;

当且仅当至少存在一个元素a ∈ A同时出现在R中的两个有序偶对中,即有<a,bi> ∈ R和< a,bj > ∈ R,而且至少存在一个元素b ∈ B同时出现在R中的两个有序偶对中,即有< ai,b > ∈ R和< aj,b > ∈ R,关系具有多对多势。

类似于映射到值域的上函数和中函数之间的差别,对关系也存在同样的参与的概念。

定义

给定集合A、B和关系R ? A×B,关系R的参与定义为:

当且仅当A的每个元素都出现在R的某个有序偶对中,关系是全参与关系;

当且仅当A中存在元素不出现在R的任何有序偶对中,关系是部分参与关系;

当且仅当B的每个元素都出现在R的某个有序偶对中,关系是上参与关系;

当且仅当B中存在元素不出现在R的任何有序偶对中,关系是中参与关系。

用自然语言来叙述就是:如果关系适用于A的每个元素,则为全参与;如果关系不能适用于A的所有元素,则为部分参与。全参与和部分参与之间差别的另一种表述方式是强制参与和可选参与。类似地,如果关系适用于B的每个元素,则为上参与;如果关系不能适用于B的所有元素,则为中参与。值得特别讨论的是,上参与和中参与之间的差别同全参与和部分参与之间出奇地相似。从关系型数据库理论的角度来看,是没有理由呈现出这种平行性的;实际上更有理由应该刻意避免出现这种情况。数据建模在本质上是陈述性的,而过程建模在本质上却是强制性的。术语上的平行性暗示着关系必须具有方向性,但实际上并不需要这种方向性。之所以给人造成这种方向性的感觉,部分原因可能是源于笛卡儿积事实上是有序偶对构成的,自然排列出了第一元素和第二元素。

至此仅讨论了两个集合之间的关系。将关系推广到3个或更多的集合上,要比推广笛卡儿积复杂得多。比如,假设有3个集合A、B、C和一个关系R ? A×B×C,那么应该把关系严格地定义在三个元素上,还是定义在一个元素和一个有序偶对上呢(这会有3种可能性)?这个思路还需要适用于势和参与的定义。对参与来说情况比较简单,但势是具有二值性的。(比如,设想一下A到B是一对一映射关系,而A到C是多对一映射关系的情况。)在第1章中研究规定行为、实现行为和已测试行为时,曾经讨论过这种三向关系。我们希望在测试用例和规格说明–程序实现偶对之间能够存在某种形式的全参与关系,在后面研究功能测试和结构测试时还要继续讨论这个问题。

测试人员需要留心关系的定义,因为关系定义同被测软件的性质直接相关。例如,上参与和中参与之间的差别就直接源自所谓的基于输出的功能测试;而强制参与和可选参与之间的差别则是异常处理的基础,对测试人员也非常有用。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

ASP网络编程从入门到精通

本书是为那些对Web开发感兴趣的读者而编写的。ASP(Active Server Pages)是微软公司在Web领域的又一次突破,它打破了以往只能由专业人员来...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊