- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
描绘软件结构的图形工具 结构图(Yourdon) 面向数据流的设计方法 一、概念 变换流 事物流 设计过程 面向数据流的设计方法 交换流 面向数据流的设计方法 事物流 面向数据流的设计方法 设计过程 面向数据流的设计方法 二、变换分析 将具有变换流特征的数据流图映射成软件结构。 三、事物分析 将具有事物流特征的数据流图映射成软件结构。 四、设计优化 * 软件工程 * 谢谢! * * (1) 无直接耦合:指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。 因此, 模块间的这种耦合性最弱,模块独立性最高。 (2) 数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。这种耦合程度较低, 模块的独立性较高。 (3) 标记耦合:指两个模块之间传递的是数据结构, 如高级语言中的数组名、记录名和文件名等这些名字即为标记, 其实传递的是这个数据结构的地址。两个模块必须清楚这些数据结构,并按要求对其进行操作,这样降低了可理解性。 可采用“信息隐蔽”的方法,把该数据结构以及在其上的操作全部集中在一个模块,就可消除这种耦合,但有时因为还有其他功能的缘故,标记耦合是不可避免的。 (4) 控制耦合: 指一个模块调用另一个模块时,传递的是控制变量(如开关、 标志等),被调模块通过该控制变量的值有选择地执行块内某一功能。 因此被调模块内应具有多个功能, 哪个功能起作用受其调用模块的控制。 控制耦合增加了理解与编程及修改的复杂性, 调用模块必须知道被调模块内部的逻辑关系,即被调模块处理细节不能“信息隐藏”, 降低了模块的独立性。 在大多数情况下, 模块间的控制耦合并不是必需的, 可以将被调模块内的判定上移到调用模块中去,同时将被调模块按其功能分解为若干单一功能的模块,将控制耦合改变为数据耦合。 (5) 公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。公共数据环境可以是全程变量或数据结构、 共享的通信区、 内存的公共覆盖区及 任何存储介质上的文件和物理设备等(也有将共享外部设备分类为外部耦合的)。 公共耦合的复杂程度随耦合模块的个数增加而增加。如果只有两个模块之间有公共数据环境,那么这种公共耦合就有两种情况: ① 一个模块只是给公共数据环境送数据,另一个模块只是从公共环境中取数据,这只是数据耦合的一种形式,是比较松散的公共耦合; ② 两个模块都既往公共数据环境中送数据, 又从里面取数据,这是紧密的公共耦合。 如果在模块之间共享的数据很多,且通过参数的传递很不方便时,才使用公共耦合,因为公共耦合会引起以下问题: ① 耦合的复杂程度随模块的个数增加而增加,无法控制各个模块对公共数据的存取,若某个模块有错,可通过公共区将错误延伸到其他模块, 则会 影响到软件的可靠性。 ② 使软件的可维护性变差。若某一模块修改了公共区的数据,则会影响到与此有关的所有模块。 ③ 降低了软件的可理解性。 因为各个模块使用公共区的数据,使用方式往往是隐含的,某些数据被哪些模块共享, 不易很快搞清。 * 偶然内聚: 指一个模块内的各处理元素之间没有任何联系。例如,有一些无联系的处理序列在程序中多次出现或在几个模块中都出现, 如: Read disk File; Calculate current values; Produce user output; … 为了节省存储,把它们抽出来组成一个新的模块,这个模块就属于偶然内聚。这样的模块不易理解也不易修改,这是最差的内聚情况。 (2) 逻辑内聚: 指模块内执行几个逻辑上相似的功能, 通过参数确定该模块完成哪一个功能。如产生各种类型错误的信息输出放在一个模块,或从不同设备上的输入放在一个模块, 这是一个单入口多功能模块。这种模块内聚程度有所提高, 各部分之间在功能上有相互关系,但不易修改; 当某个调用模块要求修改此模块公用代码时,而另一些调用模块又不要求修改。另外,调用时需要进行控制参数的传递, 造成模块间的控制耦合,调用此模块时,不用的部分也占据了主存, 降低了系统效率。 (3) 时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。如初始化一组变量,同时打开若干文件, 同时关闭文件等, 都与特定时间有关。时间内聚比逻辑内聚程度高一些,因为时间内聚模块中的各部分都要在同一时间内完成。 但是由于这样的模块往往与其他模块联系的比较紧密,
文档评论(0)