软件设计作业

软件设计的目标及主要任务有哪些

目标是构造系统怎么做的模型描述

什么是模块化设计思想

把一个大型软件系统的全部功能,按照一定的原则合理的划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体,这就是软件的模块化设计
分解,抽象,逐步求精,信息隐蔽和模块独立性是模块设计的指导思想

模块独立性的两个度量标准是什么?

内聚性

模块自身的内聚,也称为块内联系
内聚性是从功能的角度对模块内部聚合能力的量度

耦合性

模块之间的耦合,也称为块间联系

内聚和耦合的含义是什么,各有哪些种类,请举例说明每一种类型

内聚

模块自身的内聚,也称为块内联系

功能性内聚

模块各个成分结合在一起,完成一个特定的功能
例如解析XML文档模块(解析XML元素,解析XML属性,解析XML注释)

顺序性内聚

模块内的各个任务是顺序执行的.通常,上一个任务的输出是下一个任务的输入
例如规则引擎:一个任务读配置,输出执行计划.另一个任务以执行计划为输入,执行该计划
这里是数据流

通信性内聚

模块内部的任务靠公用数据联系在一起
例如: 对数据库的CRUD操作

过程性内聚

模块内的各个任务必须按照某一特定次序执行
例如文件读写,先判断有没有文件.在判断有没有权限,再进行读写
这里是控制流

时间性内聚

模块内的各个任务由相同的执行时间联系在一起
例如初始化模块
这里模块内任务的顺序是可以任意的

逻辑性内聚

通过模块传入的控制信号选择要执行的功能

偶然性内聚

纯属偶然因素聚在一起

耦合

模块之间的耦合,也称为块间联系

非直接耦合

数据耦合

特征耦合

控制耦合

外部耦合

公共耦合

内容耦合

为什么要高内聚和低耦合?高内聚低耦合是否意味着内聚越高越好,耦合越低越好呢?

为什么

便于后期代码的扩展与维护

是不是

并不是内聚越高越好,耦合越低越好,真正好的设计是在高内聚和低耦合间进行平衡,也就是说高内聚和低耦合是冲突的。
最强的内聚莫过于一个类只写一个函数,这样内聚性绝对是最高的。但这会带来一个明显的问题:类的数量急剧增多,这样就导致了其它类的耦合特别多,于是整个设计就变成了“高内聚高耦合”了。由于高耦合,整个系统变动同样非常频繁。
对于耦合来说,最弱的耦合是一个类将所有的函数都包含了,这样类完全不依赖其它类,耦合性是最低的。但这样会带来一个明显的问题:内聚性很低,于是整个设计就变成了“低耦合低内聚”了。由于低内聚,整个类的变动同样非常频繁。
真正做到高内聚、低耦合是很难的,很多时候未必一定要这样,更多的时候“最适合”的才是最好的

posted @ 2021-06-25 10:57  茕祇  阅读(87)  评论(0编辑  收藏  举报