模块与接口规范.ppt

模块与接口规范.ppt

ID:56378496

大小:431.50 KB

页数:32页

时间:2020-06-14

模块与接口规范.ppt_第1页
模块与接口规范.ppt_第2页
模块与接口规范.ppt_第3页
模块与接口规范.ppt_第4页
模块与接口规范.ppt_第5页
资源描述:

《模块与接口规范.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库

1、模块与接口规范模块及模块接口设计原则一.何为模块模块由接口和实现两部分组成。--接口指明模块的功能,即模块能做什么。它声明了使用该模块代码的标识符,类型和函数原型等;--实现指模块是如何完成起接口声明的功能。一个具体的功能模块接口是唯一固定的,但是它的实现可能会有很多种。每个实现可能使用不同的算法和数据结构,但是都必须符合接口给出的使用声明。M1M2M6M3M4M5二.模块划分基本准则模块的划分以功能为标准,相对独立的功能划分为不同的模块,各模块之间根据需要可以进行数据通信,但是必须保持功能上的相对独立性。“功能独立”的模块可以降低开发、测试、维护等阶段的代价。但是

2、“功能独立”并不意味着模块之间保持绝对的孤立。一个系统要完成某项任务,需要各个模块相互配合才能实现,此时模块之间就要进行信息交流。从功能上划分模块,保持“功能独立”是模块化设计的基本原则。三.模块与接口设计准则接口是对模块功能的声明,只需要指明客户调用程序可能使用的标识符(包括数据类型,函数原型等)即可,应尽可能隐藏内部细节和算法。1.封装与隐藏applicationM1tinterface1M2Mn声明与实现分离2.模块的独立性为了保证模块的独立封装性,就必须将声明与实现分离开来。C语言对此只提供最基本的支持。在标准C语言中,接口在头文件中声明,头文件的扩展名为.

3、h。规定:调用程序可使用的宏定义,数据结构类型,变量以及函数原型等必须在头文件中声明。调用程序使用预处理指令#include导入接口声明。禁止将函数的实现和变量的定义放在头文件。由于标准C语言没有提供命名空间机制,较大规模软件中,不同模块的全局变量和函数也很可能重名,导致重复定义错误。同时被多个模块使用的全局变量,是增大模块间耦合性的重要因素之一,为减少模块间耦合性,应尽量少用或不用多个模块共用的全局变量。规定:只在本模块内部使用的函数和全局变量,必须用static关键字修饰,以限制只能在本模块内使用。内聚是一个模块内部各成分之间相关联程度的度量。根据内聚性的强弱,

4、有以下几种类型:3.强内聚性(1)随机内聚:如果一个模块的各成分之间毫无关系,则称为随机内聚。(2)逻辑内聚:几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。(3)时间内聚:如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。(4)过程内聚:如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。

5、(5)通信内聚:如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。(6)顺序内聚:如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。(7)功能内聚:模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。好的模块设计要有尽可能高的内聚性,尽量避免随机内聚,禁止将毫无关系的成分放入同一模块。随机内聚会使模块的功能不明确,破坏模块的功能独立性。也给模块的维护、测试及升级等造成不便。m1m4m3m5m6m2InterfacenMn防止把没有关联的功能放到一个模块中。3.1.设计高内聚性模块防止函数

6、或模块内出现随机内聚。在编程时,经常遇到在不同函数中使用相同的代码,许多开发人员都会把这些代码提出来,并构成一个新函数。若这些代码关联较大并且是完成一个功能的,那么这种构造是合理的,否则这种构造将产生随机内聚的函数。例如:很多软件系统在启动的时候都需要初始化一些参数,因此不少系统会把初始化模块做成一个或多个函数。但是要防止把毫不相关的参数初始化放入同一个函数。intinit_env(){init_graphics...;//初始化图形设置init_language...;//初始化语言设置init_connect...;//初始化网络连接....}假如模块A需要使用

7、a语言,无网络连接,而模块B需要使用b语言,有网络连接。则init_env函数无论怎么改动都无法同时满足两个模块要求。此时函数init_env就是随机内聚函数,正确的修改方法应该是根据初始化的模块不同,分解成相对独立的函数。修改init_env()为三个独立的函数:intinit_graphics();intinit_language();intinit_connect();这样不同的功能模块,可以根据自己的需要调用不同的初始化模块。函数的功能要单一,不要设计“多功能”函数。函数的功能应该是单一而明确的。不要把不同的功能放入同一个函数,特别是尽量不要用控制开关来

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。