耦合性的几个类型
软件工程复习题与答案

二、填空题1.为了支持软件人员开发和维护活动而使用的软件一般是指___软件工具_____。
3.在软件结构的设计中,各个模块之间要力求降低耦合性,提高__内聚性_____。
5.数据流图(DFD)一般可分为变换型和__事务性_____两类。
6.软件维护的内容包括校正性维护、适应性维护、__完善性维护__和预防性维护。
7.软件的生产经历了三个阶段,分别是程序设计时代、程序系统时代和___软件工程时代___。
8.渐增模型是瀑布模型的变种,分为两类:增量构造模型和__演化提交模型__。
9.状态图反映了_事件与状态____的关系。
10.软件项目管理过程一个关键的活动是__制定项目计划__,它是软件开发工作的第一步。
11.组成软件的两个部分是:____程序和文档________。
14.变换型数据流图是由输入、__变换(或处理)_____和输出三部分组成的。
15.Jackson方法是一种面向___数据结构_____的开发方法。
16.结构化语言是介于___自然语言_____和形式语言之间的一种半形式语言。
17.软件产品在交付使用之前一般要经过___单元测试___、集成测试、确认测试和系统测试。
18.不采用软件工程的方法开发软件,软件只有程序而无文档,从而导致维护工作困难,这是一种__结构化______的维护。
19.子类自动共享父类数据结构和方法的机制是___继承性_____,这是类之间的一种关系。
21.软件生产的发展经历了三个阶段,分别是程序设计时代、程序系统时代和___软件工程____时代。
22.可行性研究从以下三个方面研究每种解决方法的可行性:经济可行性、社会可行性和__技术可行性____。
23.HIPO图的H图用于描述软件的层次关系,矩形框表示一个模块,矩形框之间的直线表示模块之间的____调用_____关系。
24.数据流图描绘数据在系统中___流动和处理___的过程。
25.为了便于对照检查,测试用例应由输入数据和预期的___输出结果(输出数据)____两部分组成。
《软件工程》练习题

18.为了提高模块的独立性,模块内部最好是( C )。 A.逻辑内聚 B.时间内聚 C.功能内聚 D.通信内聚 19.软件结构图中,模块框之间若有直线连接,表示它们之间存在( A )。 A.调用关系 B.组成关系 C.链接关系 D.顺序执行关系 20. “软件危机”是指( C ) 。 A. 计算机病毒的出现 B.利用计算机进行经济犯罪活动 C.软件开发和维护中出现的一系列问题 D.人们过分迷恋计算机系统 21.具有风险分析的软件生命周期模型是( C ) 。 A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 22.数据流图(DFD)中的每个数据处理至少需要( D ) 。 A.一个输入数据流 B.一个输出数据流 C.一个输入或者输出数据流 D.一个输入数据流和一个输出流 二.判断题(每小题 2 分,共 24 分) 1.文档是软件产品的一部分,没有文档的软件就不称其为软件。 ( Y ) 2.需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。 ( N ) 3.数据流图建立系统的功能模型,它由数据流、数据处理和数据存贮组成。 (N ) 4.在结构化分析建模中要建立的是对象模型、功能模型和行为模型,它们以数据字典为核心。 ( N ) 5.好的测试是用少量的测试用例运行程序,发现被测程序尽可能多的错误。 (Y ) 6.边界值分析方法是取输入/输出等价类的边界值来构成测试用例的测试方法。 (Y ) 7.在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。 ( N ) 8.在需求分析中,分析员要从用户那里解决的最重要的问题是明确软件做什么。 ( Y ) 9.软件需求规格说明书在软件开发中具有重要的作用,是软件可行性分析的依据。 ( N ) 10.面向对象方法学的四要素是对象、类、继承和消息通信。 ( Y ) 11.详细设计的结果基本最终决定了软件的质量。 ( Y ) 12.在详细设计中常采用的工具有层次图、PAD(问题分析图) 、程序流程图、盒图等。 ( N ) 三.填空题(每空 2 分,共 24 分) 1.为了便于对照检查,测试用例应由输入数据和预期的 输出结果 两部分组成。 2.软件结构是以 模块 为基础而组成的一种控制层次结构。 3.如果知道软件的规格说明书描述的程序功能,那么就可以采用 进行测试。 4.当 A 模块调用 B 模块时若两个模块之间传递的是数值型参数,则这两个模块的耦合方式是 数值耦合。 5.软件概要设计关键的一步是 确定软件体系结构 __,它直接影响下一阶段详细设计和编码的工作。 6. 数据流图中的箭头表示 数据流 , 椭圆或圆形表示 数据处理 , 矩形表示 数据源点或终点 。 7.软件开发是一个自顶向下逐步细化和求精过程,而软件测试是一个___自底向上或相反____集成的过程。 8.按数据流的类型,面向数据流的设计方法有两种设计策略,它们是变换分析设计和 事务分析设计。 9.数据流图仅反映系统必须完成的逻辑功能,所以它是一种 功能 模型。 10.软件结构中的 深度 表示的软件的控制层数,它往往能够粗略地标志一个系统的大小和复杂程度。 四.简答题(每小题 5 分,共 10 分) 1.衡量模块独立性的两个定性标准是什么(2 分)?这两个标准的定义分别是什么(2 分)?在我们的软件设计 中,关于模块独立性我们追求的目标是什么 答:衡量模块独立性的两个定性标准是内聚和耦合(2 分) 。 耦合是指对一个软件结构内不同模块彼此之间互相依赖(连接)的紧密程度;而内聚则标志一个模块内部各个元 素彼此结合的紧密程度。在我们的软件设计中,关于模块独立性我们追求的目标是紧密内聚松散耦合(。 2.简述结构化程序设计方法的基本特点。 (5 分) 答: 1) .是尽可能少用 goto 语句的程序设计方法; 2) .每个代码块都单入单出; 3) .使用控制结构:顺序、选择和循环+Do_UNTIL 和 Do_CASE; 4) .自顶向下逐步求精。
yun

1. GIS软件工程:就是在GIS软件的开发整个过程中,遵循一般软件开发的工程化原理和方法,并照顾到GIS软件开发的特殊规律和要求,对GIS软件从可行性研究、需求分析、总体设计、详细设计、软件编制、软件测试,直到软件维护的各个阶段进行工程化规范的一门技术。
2. 软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
3. 地图数字化:是指将地图转换为可为计算机系统识别的数据文件,这种数据文件符合一定的数据格式,其有特定的比例尺和精度,包含各空间要素在某一坐标系统中的位置和属性,可通过接收其格式的软件系统管理、提取、分析和编辑制图。
4. PDL:是指一种用于描述功能模块的算法设计和加工细节的语言,称为设计程序用语言。
它是一种伪码。
一般地,伪码的语法规则分为“外语法”和“内语法”。
外语法应当符合一般程序设计语言常用语句的语法规则。
而内语法可以用英语中一些简单的句子、短语和通用的数学符号来描述程序应执行的功能。
5. 模块:是指在程序中数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数和子程序等。
6. UML:统一建模语言(Unified Modeling Language)的缩写,是用来对软件密集系统进行可视化建模的一种语言,能让系统构造者用标准的、易于理解的方式表达出系统蓝图,便于用户、开发者之间进行交流设计结果。
7.信息隐蔽:是指在设计的确定模块时,使得一个模块内包含的信息(过程或数据),(1分)对于不需要这些信息的其他模块来说,是不能访问的。
(1分)通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的存取限制。
(1分)8.软件工程是计算机科学中的一个分支,它是用科学知识和技术原理来定义、开发、维护软件的一门学科。
(1分)其主要思想是在软件生产中用工程化的方法替代传统手工方法。
(1分)工程化的方法借用了传统的工程设计原理的基本思想,采用了若干科学的、现代化的方法技术来开发软件。
软件工程(李军国等)课后习题原题

软件工程习题习题1一、判断题1.程序是按事先设计的功能和性能要求执行的指令序列。
2.数据是使程序能够正确操纵信息的数据结构。
3.文档是与程序开发、维护和使用有关的图文材料。
4.软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大。
5.增量模型的特点是文档驱动。
6.瀑布模型的特点是文档驱动。
7.瀑布模型是一种软件生存周期模型。
8.在软件生存周期中,用户主要是在软件开发期参与软件开发。
9.瀑布模型的主要问题是可靠性低。
10.软件生存周期中时间最长的阶段是需求分析。
11.原型化方法适用于需求已确定的系统。
12.瀑布模型本质上是一种线性顺序模型。
13.原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于需求不确定性高的系统。
二、填空题1.软件工程是开发、运行、维护和修复软件的系统化方法,它包含的三个要素指的是:(A )(B )和(C )2.软件是计算机系统中与硬件相互依存的另一部分,它是包括(A )(B )及(C )的完整集合。
3.开发软件时对提高软件开发人员工作效率至关重要的是(A),软件工程中描述生存周期的瀑布模型一般包括计划(B )、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成(C )和(D )两步。
4.软件发展过程的第一阶段称为“程序设计的原始时期”,这时既没有(A ),也没有(B ),程序员只能用机器指令编写程序。
5.软件发展过程的第二阶段称为“基本软件期”,出现了(A),并逐渐普及,随着(B )的发展,编译技术也有较大的发展。
6.软件发展过程的第三阶段称为“程序设计方法时代”,这一时期,与硬件费用下降相反,软件开发费急剧上升。
人们提出了(A )和(B )等程序设计方法,设法降低软件的开发费用。
7.软件发展过程的第四阶段称为“软件工程时期”,软件开发技术不再仅仅是程序设计技术,而是包括与软件开发的各个阶段,如(A )、(B )、编码、单元测试、综合测试、(C )及其整体有关的各种管理技术。
软件工程考试题

六、填空题1、(可行性研究)的目的就是用最小代价在尽可能短的时间内确定该软件项目是否能够开发、是否值得开发。
2、可行性研究的目的不是是开发一个软件项目,而是研究这个项目是否(是否做值得)。
3、可行性研究需要从(经济)可行性、(技术)可行性、(操作)可行性和(社会)可行性四个方面分析研究每种解决方案的可行性。
4、技术可行性是对开发项目的(功能、性能、限制条件)进行分析,确定现有4、可行性研究要进行的需求分析和设计应是(C)。
A.详细的B.全面的C.简化的D.彻底的七、填空题1、需求分析的基本任务是要准确地定义(扇新系统的目标),为了满足用户需求,回答系统必须(做什么)的问题。
2、在需求分析阶段,首先进行问题识别,即双方确定对问题的综合需求,这些需求包括:(功能)需求、(性能)需求、(环境)需求、(用户界面)需求。
另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的需求。
3、需求分析的困难主要体现在4个方面:问题的复杂性、(交流障碍)、(不完备性和不一致性)、需求易变性。
4、在需求分析阶段进行以下几个方面的工作:识别系统综合要求、(分析系统的数据要求)、导出软件逻辑模型、(编写文档)。
八、选择题1、需求分析(D)。
A.要回答“软件必须做什么?”B.可概括为:“理解、分解、表达”6个字C.要求编写需求规格说明书D.以上都对的(物理)模型,即着手实现软件需求,并将设计的结果反映在(设计)文档中。
9、总体设计评价是对设计部分是否完整地实现了需求中规定的(功能)、(性能)等要求,设计方案的(可行性),关键的处理及内外部接口定义(正确性)有效性,各部分之间的(一致性)等都一一进行评审。
10、在一个模块中,(功能)、(状态)和(接口)反映模块外部特征,(逻辑)反映它的内部特性。
11、(信息隐藏)是指在设计和确定模块时,使得一个模块的内包含的信息对于不需要遮羞信息的其它模块来说是不能(访问)的。
12、设计软件结构,具体为:(1)采用某种方法将一个复杂系统按功能划分为(模块)(2)确定每个模块的(功能)(3)确定模块之间的(调用关系)(4)确定模块之间的(接口),即模块之间传递的信息。
软件工程—简答题

软件工程—简答题四、简答题1. 简述软件危机产生的缘故。
答案:软件危机产生的缘故有:(每点1分)(1)软件的规模越来越大,结构越来越复杂。
(2)软件开发的治理困难。
由于软件规模大,结构复杂,又具有无形性,导致治理困难,进度操纵困难,质量操纵困难,可靠性无法保证。
(3)软件开发费用不断增加。
软件生产是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多,周期长,费用上升专门快。
(4)软件开发技术、开发工具落后,生产率提高缓慢。
(5)生产方式落后。
软件仍旧采纳个体手工方式开发。
2. 简述需求分析的概念及需求分析的差不多任务。
答案:需求分析是指开发人员要准确明白得用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
(3分)需求分析的差不多任务是要准确地定义新系统的目标,为了满足用户需要,回答系统必须〝做什么〞的问题。
(2分)3. 简述数据流图的分类及每一类的特点。
答案:数据流图有两类:变换型数据流图和事务型数据流图。
(1分)变换型数据流图是由输入、处理和输出三部分组成,(1分)因此变化型数据流图是一个顺序结构。
(1分)事务型数据流图特点:事务处理中心将它的输入流分离成许多发散的数据流,形成许多加工路径,(1分)并依照输入的值选择其中一个路径来执行。
(1分)4. 简述建立对象模型的过程。
答案:建立对象模型的步骤如下:(每点1分)(1)确定类:标出来自问题域的相关对象类。
(2)预备数据字典:为所有建模实体预备一个数据字典,准确描述各对象类的精确含义,描述当前问题中的类的范畴,包括对类的成员、用法方面的假设或限制;(3)确定关联:确定二个或多个类之间的相互依靠;(4)确定属性:只考虑与具体应用直截了当相关的属性(5)使用继承来细化类:使用继承来共享公共结构,以此来重新组织类__全国2020年1月1.简述软件工程面临的问题。
软件工程试题含答案

软件工程期末试题(1)一, 判断题(正确的在括号内打上"√",错误的打上"×".每题1.5分,共15分)Warnier方法也是一种面向数据结构的设计方法,其逻辑更严格.(×) PAD图在设置了五种基本控制结构后,还允许递归调用. (×) 你为了加快软件维护作业的进度,应尽可能增加维护人员的数目.(×) 当验收测试通过,软件开发就完成了.(×)完成测试作业后,为了缩短源程序的长度应删除程序中的注解.(×) 系统结构图是精确表达程序结构的图形表示法.因此,有时也可以将系统结构图当作系统流程图使用.(×)在程序调试时,找出错误的位置和性质比改正该错误更难.(√) 以对象,类,继承和通信为基础的面向对象设计方法(OOD)也是常见的软件概要设计方法之一.(√)二,单项选择题(每小题2分,共10分)试判断下列叙述中,哪个(些)是正确的(D)a,软件系统中所有的信息流都可以认为是事务流b,软件系统中所有的信息流都可以认为是变换流c,事务分析和变换分析的设计步骤是基本相似的A,a B,b C,c D,b和c进行需求分析可使用多种工具,但(B)是不适用的.A,数据流图B,PAD图C,判定表D,数据词典在详细设计阶段,经常采用的工具有(A).A,PAD B,SA C,SC D,DFD详细设计的结果基本决定了最终程序的(C)A,代码的规模B,运行速度C,质量D,可维护性使用白盒测试方法时,确定测试数据应根据(A)和指定的覆盖标准. A,程序的内部逻辑B,程序的复杂程度C,该软件的编辑人员D,程序的功能三,多项选择题(每题2分,共10分.注:正确得2分,漏选得1分,多选,错选不得分.)(ABCD)可以作为模块.A,子程序B,函数C,过程D,编译文件下面哪些测试属于黑盒测试(BCD).A,路径测试B,等价类划分C,边界值分析D,错误推测E,循环测试下列属于度量效益方法的是(ABCD).A,货币的时间价值B,投资回收期C,收入D,投资回报率软件维护的策略包括(BCD).A,定期检测维护B,改正性维护C,适应性维护D,完善性维护下列属于软件测试过程的是(ABE).A,单元测试B,组装测试C,内核测试D,法律验证E,确认测试四,简答题(每题6分,共24分)1、耦合性和内聚性有几种类型其耦合度,内聚强度的顺序如何答案:低:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合:高强:功能内聚,信息内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,偶然内聚:弱2、请举例说明什么是多态,什么是重载答案:多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象.也就是说,在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为.当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法.3、重载是指一个类中有多个同名的方法,但在操作数个数或类型上有区别.例: public class A{int age;String name;public void setValue(int i) {age=i; }public void setValue(String s) {name=s; }4、什么是数据字典简述数据字典与数据流图的关系.答案:数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与说明,是数据流程图的补充工具.(2分)数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格, 然而没有数据流图数据字典也难于发挥作用. 数据流图和对数据流图中每个元素的精确定义放在一起,才能共同构成系统的规格说明.(3分)5、简述编码风格的重要性.答案:阅读程序是软件开发和维护过程中的一个重要组成部分,程序实际上也是一种供人阅读的文章.应当在编写程序时讲求程序的风格,这将大量地减少人们读程序的时间.良好的编码风格有助于编写出可靠而又容易维护的程序,编码的风格在很大程度上决定着程序的质量.面向对象的测试和传统开发方法的测试有什么不同答案:(1)二者都可以分成四个阶段进行.但传统测试最小单元是模块,而在面向对象环境下,最小的可测试的单元是封装了的类或对象,而不是程序模块.(2)因为面向对象软件没有一个层次的控制结构,所以传统的自顶向下和自底向上的组装策略意义不大. 每次将一个操作组装到类中(像传统的增殖式组装那样)常常行不通,因为在构成类的各个部件之间存在各种直接的和非直接的交互.对于面向对象系统的组装测试,存在两种不同的测试策略.软件工程期末试卷(2)(开放教育本科)计算机科学与技术专业《软件工程》试题B一、填空题(每空1分,共20分)1.软件生存周期一般可分为__问题定义__、可行性研究、__需求分析_、设计编码、_测试_、运行与维护阶段。
软件结构简答题

软件开发环境:指在计算机的基本软件基础上,为了支持软件开发而提供的一组工具软件系统软件开发方法软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产的过程。
软件生存周期一个软件从提出开发要求直到该软件报废为止的整个时期。
需求分析需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求成熟转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。
错误推测法:在测试程序是,人们可能根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法黑盒测试法:把本测试对象看成一个黑盒子,测试人员不考虑程序内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求软件质量保证:是向用户及社会提供满意的高质量的产品,确保软件从诞生到消亡为止的所有阶段的质量活动,即确定达到和维护需要的软件质量而进行的所有有计划有系统的管理活动瀑布模型:将软件生存周期各个活动规定为依线性顺序连接的若干阶段的一种软件开发模型,它包括可行性分析,项目开发计划,需求分析,概要设计,详细设计,编码,测试和维护程序设计风格程序设计风格指一个人编制程序时所表现出来的特点,习惯逻辑思路等。
白盒测试该方法把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
基线基线是软件生存周期中各开发阶段的一个特定点,它的作用是把开发个阶段工作的划分更加明确,使本来连续的工作在这些点上断开,以便检查与肯定阶段成果。
因此基线可以作为一个检查点。
耦合性软件系统结构中各模块间相互联系的紧密程度的一种度量。
内聚性内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量多态性指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
耦合性是程序结构中各个模块之间相互关联的度量。
它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。
一般模块之间可能的连接方式有七种,构成耦合性的七种类型。
它们之间的关系为(由弱到强)
(1)非直接耦合(Nondirect coupling)
如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。
这种耦合的模块独立性最强。
(2)数据耦合(Data Coupling)
如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。
由于限制了只通过参数表传递数据,按数据耦合开发的程序界面简单、安全可靠。
因此,数据耦合是松散的耦合,模块之间的独立性比较强。
在软件程序结构中至少必须有这类耦合。
(3)标记耦合(Stamp Coupling)
如果一组模块通过参数表传递记录信息,就是标记耦合。
事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。
这要求这些模块都必须清楚该记录的结构,并按结构要求对此记录进行操作。
在设计中应尽量避免这种耦合,它使在数据结构上的操作复杂化了。
如果采取“信息隐蔽”的方法,把在数据结构上的操作全部集中在一个模块中,就可以消除这种耦合。
(4)控制耦合(control(20upling)
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
如图4.13所示。
这种耦合的实质是在单一接口上选择多功能模块中的某项功能。
因此,对所控制模块的任何修改,都会影响控制模块。
另外,控制耦合也意味着控制模块必须知道所控制模块内部的一些逻辑关系,这些都会降低模块的独立性。
(5)外部耦合(External(;oupling)
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
例如C语言程序中各个模块都访问被说明为extern类型的外部变量。
外部耦合引起的问题类似于公共耦合,区别在于在外部耦合中不存在依赖于一个数据结构内部各项的物理安排。
(6)公共耦合((;ommon Coupling)
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。
公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
这种耦合会引起下列问题:
1)所有公共耦合模块都与某一个公共数据环境内部各项的物理安排有关,若修改某个数据的大小,将会影响到所有的模块。
2)无法控制各个模块对公共数据的存取,严重影响软件模块的可靠性和适应性。
3)公共数据名的使用,明显降低了程序的可读性。
[Page]
公共耦合的复杂程度随耦合模块的个数增加而显著增加。
如图4.14所示,若只是两个模块之间有公共数据环境,则公共耦合有两种情况。
若一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据,则这种公共耦合叫做松散公共耦合。
若两个模块都从公共数据环境中取数据,又都向公共数据环境里送数据,则这种公共耦合叫做紧密公共耦合。
只有在模块之间共享的数据很多,且通过参数表传递不方便时,才使用公
共耦合。
否则,还是使用模块独立性比较高的数据耦合好些。
(7)内容耦合((70ntent Coupling)
如果发生下列情形,两个模块之间就发生了内容耦合。
1)一个模块直接访问另一个模块的内部数据;
2)一个模块不通过正常入口转到另一模块内部;
3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
4)一个模块有多个入口。
在内容耦合的情形,所访问模块的任何变更,或者用不同的编译器对它再编译,都会造成程序出错。
好在大多数高级程序设计语言已经设计成不允许出现内容耦合。
它一般出现在汇编语言程序中。
这种耦合是模块独立性最弱的耦合。