“软件设计”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
第17行: | 第17行: | ||
|- | |- | ||
|顺序内聚 | |顺序内聚 | ||
− | | | + | |各个处理元素都密切相关与同一功能且'''<big>必须顺序执行</big>''', |
前一个功能元素的输出就是下一个功能元素的输入 | 前一个功能元素的输出就是下一个功能元素的输入 | ||
|- | |- | ||
第25行: | 第25行: | ||
|- | |- | ||
|过程内聚 | |过程内聚 | ||
− | | | + | |模块内部的处理成分是相关的,而且这些处理'''<big>必须以特定的次序执行</big>''' |
|- | |- | ||
|瞬时内聚(时间内聚) | |瞬时内聚(时间内聚) | ||
− | | | + | |把需要'''<big>同时执行的动作</big>'''组合在一起形成的模块 |
|- | |- | ||
|逻辑内聚 | |逻辑内聚 | ||
第35行: | 第35行: | ||
|- | |- | ||
|偶然内聚(巧合内聚) | |偶然内聚(巧合内聚) | ||
− | | | + | |模块内的各处理元素之间'''<big>没有任何联系</big>''' |
|} | |} | ||
最强内聚类型:功能内聚 | 最强内聚类型:功能内聚 | ||
+ | |||
+ | {| class="wikitable" | ||
+ | !耦合类型 | ||
+ | !描述 | ||
+ | |- | ||
+ | |非直接耦合 | ||
+ | |两个模块之间没有直接关系,分别从属于不同模块的控制和调用, | ||
+ | 之间不传递任何信息 | ||
+ | |- | ||
+ | |数据耦合 | ||
+ | |两个模块间有调用关系,传递简单的数据值 | ||
+ | |- | ||
+ | |标记耦合 | ||
+ | |两个模块之间传递的是数据结构 | ||
+ | |- | ||
+ | |控制耦合 | ||
+ | |一个模块调用另一个模块时,传递的是控制变量,被调用模块根据控制 | ||
+ | 变量执行某个功能 | ||
+ | |- | ||
+ | |外部耦合 | ||
+ | |模块间通过软件之外的环境联结(如I/O将模块耦合到特定的设备、格式、通用协议上) | ||
+ | |- | ||
+ | |公共耦合 | ||
+ | |通过一个公共数据环境相互作用的那些模块间的耦合 | ||
+ | |- | ||
+ | |内容耦合 | ||
+ | |一个模块直接使用另一个模块的内部数据; | ||
+ | 或通过非正常入口而转入另一个模块内部 | ||
+ | |} |
2022年9月24日 (六) 06:55的版本
https://www.bilibili.com/video/BV1hg411V7Bm/?p=77
1)软件设计原则
软件设计原则:抽象、模块化、信息隐蔽、模块独立
软件设计的任务与活动
2)内聚和耦合
内聚类型 | 描述 |
---|---|
功能内聚 | 最强的内聚,完成一个单一功能,各个部分协同工作,缺一不可 |
顺序内聚 | 各个处理元素都密切相关与同一功能且必须顺序执行,
前一个功能元素的输出就是下一个功能元素的输入 |
通信内聚 | 所有处理元素集中在同一个数据结构的区域上,或者各处理使用相同
的输入数据或产生相同的输出数据 |
过程内聚 | 模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行 |
瞬时内聚(时间内聚) | 把需要同时执行的动作组合在一起形成的模块 |
逻辑内聚 | 模块内执行若干个逻辑上相似的功能,
通过参数确定该模块完成哪一个功能 |
偶然内聚(巧合内聚) | 模块内的各处理元素之间没有任何联系 |
最强内聚类型:功能内聚
耦合类型 | 描述 |
---|---|
非直接耦合 | 两个模块之间没有直接关系,分别从属于不同模块的控制和调用,
之间不传递任何信息 |
数据耦合 | 两个模块间有调用关系,传递简单的数据值 |
标记耦合 | 两个模块之间传递的是数据结构 |
控制耦合 | 一个模块调用另一个模块时,传递的是控制变量,被调用模块根据控制
变量执行某个功能 |
外部耦合 | 模块间通过软件之外的环境联结(如I/O将模块耦合到特定的设备、格式、通用协议上) |
公共耦合 | 通过一个公共数据环境相互作用的那些模块间的耦合 |
内容耦合 | 一个模块直接使用另一个模块的内部数据;
或通过非正常入口而转入另一个模块内部 |