在软件设计中,很多人都不知道模块设计是什么。模块化设计是指将工业模具分解成小的部分过程。在模块设计中,把分解成小部分称为模块,设计此类模块的过程称为模块设计。在计算机程序中,可以复制,分离和重复使用的单元也称为模块。使用计算机程序来编译这样的模块称为模块化设计。模块设计非常便于内容的组织和管理;适用于响应式框架;融合卡片和极简风格;基于网格,能在任何项目平台上使用。
在设计好软件的体系结构后,就已经在宏观上明确了各个模块应具有什么功能,应放在体系结构的哪个位置。我们习惯地从功能上划分模块,保持“功能独立”是模块化设计的基本原则。因为,“功能独立”的模块可以降低开发、测试、维护等阶段的代价。但是“功能独立”并不意味着模块之间保持绝对的孤立。一个系统要完成某项任务,需要各个模块相互配合才能实现,此时模块之间就要进行信息交流。
评价模块设计优劣的三个特征因素:“信息隐藏”、“内聚与耦合”和“封闭——开放性”。
● 信息隐藏
为了尽量避免某个模块的行为去干扰同一系统中的其它模块,在设计模块时就要注意信息隐藏。应该让模块仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。
模块的信息隐藏可以通过接口设计来实现。接口是模块的外部特征,应当公开;而数据结构、算法、实现体等则是模块的内部特征,应当隐藏。一个模块仅提供有限个接口,执行模块的功能或与模块交流信息必须且只须通过调用公有接口来实现。如果模块是一个C++对象,那么该模块的公有接口就对应于对象的公有函数。如果模块是一个COM对象,那么该模块的公有接口就是COM对象的接口。一个COM对象可以有多个接口,而每个接口实质上是一些函数的集合。
● 高内聚
内聚是一个模块内部各成分之间相关联程度的度量。内聚程度从低到高大致划分为低端、中段和高端。模块设计者没有必要确定内聚的精确级别,重要的是尽量争取高内聚,避免低内聚。
各种内聚类型的含义如下:
偶然性内聚。如果一个模块的各成分之间的关系彼此松散,称为偶然性内聚。
逻辑性内聚。几个逻辑上相关的功能被放在同一模块中,则称为逻辑性内聚。例如一个模块读取各种不同类型外设的输入。
时序性内聚。如果一个模块内的几个功能必须在同一时间内执行,但这些功能只是因为时间因素关联在一起,则称为时间性内聚。
过程性内聚。如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程性内聚。
通信内聚。如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。
顺序内聚。如果模块内的某个成分的输出作为另一个成分的输入,则称为顺序内聚。
功能内聚。模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。
● 低耦合
耦合是模块之间依赖程度的度量。内聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其它模块之间存在弱耦合。
耦合的强度依赖于以下几个因素:
1.一个模块对另一个模块的函数调用数量;
2.一个模块向另一个模块传递的数据量;
3.一个模块施加到另一个模块的控制的多少;
4.模块之间接口的复杂程度。
耦合程度从低到高大致划分为低端、中段和高端。模块设计应当争取“高内聚、低耦合”,而避免“低内聚、高耦合”。
各种耦合类型的含义如下:
非直接耦合。模块之间没有直接的信息传递,称为非直接耦合。
数据耦合。模块之间通过接口传递参数,称为数据耦合。
标记耦合。模块间通过接口传递内部数据结构的一部分,称为印记耦合。此数据结构的变化将使相关的模块发生变化。
控制耦合。模块传递信号给另一个模块,接收信号的模块根据信号值调整动作,称为控制耦合。
公共耦合。两个以上的模块共同引用一个全局数据项,称为公共耦合。
内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。
以上就是关于软件设计中的模块设计是什么的全部内容介绍,想了解更多关于模块设计的信息,请继续关注中培教育。