软件模块划分准则
软件模块划分原则

模块划分的重要性所谓软件的模块划分是指在软件设计过程中,为了能够对系统开发流程进行管理,保证系统的稳定性以及后期的可维护性,从而对软件开发按照一定的准则进行模块的划分。
根据模块来进行系统开发,可提高系统的开发进度,明确系统的需求,保证系统的稳定性。
在系统设计的过程中,由于每个系统实现的功能不同,所以每个系统的需求也将会不同。
也就导致了系统的设计方案不同。
在系统的开发过程中,有些需求在属性上往往会有一定的关联性,而有些需求之间的联系很少。
如果在设计的时候,不对需求进行归类划分的话,在后期的过程中往往会造成混乱。
软件设计过程中通过对软件进行模块划分可以达到一下的好处:(1) 使程序实现的逻辑更加清晰,可读性强。
(2) 使多人合作开发的分工更加明确,容易控制。
(3) 能充分利用可以重用的代码。
(4) 抽象出可公用的模块,可维护性强,以避免同一处修改在多个地方出现。
(5) 系统运行可方便地选择不同的流程。
(6) 可基于模块化设计优秀的遗留系统,方便的组装开发新的相似系统,甚至一个全新的系统。
模块划分的方法很多人都参与过一些项目的设计,在很多项目设计过程中对于模块划分大多都是基于功能进行划分。
这样划分有一个好处,由于在一个项目的设计过程中,有着诸多的需求。
而很多需求都可以进行归类,根据功能需求分类的方法进行模块的划分。
可以让需求在归类上得到明确的划分,而且通过功能需求进行软件的模块划分使得功能分解,任务分配等方面都有较好的分解。
按照任务需求进行模块划分是一种基于面向过程的划分方法,利用面向过程的思想进行系统设计的好处是能够清晰的了解系统的开发流程。
对于任务的分工、管理,系统功能接口的制定在面向过程的思想中都能够得到良好的体现。
按任务需求进行模块划分的主要步骤如下:(1) 分析系统的需求,得出需求列表;(2) 对需求进行归类,并划分出优先级;(3) 根据需求对系统进行模块分析,抽取出核心模块;(4) 将核心模块进行细化扩展,逐层得到各个子模块,完成模块划分。
软件模块划分准则

内聚度和耦合度ZT: ZhangHui. 2011.03.091联系当一个程序段或语句(指令)引用了其它程序段或语句(指令)中所定义或使用的数据名(即存贮区、地址等)或代码时,他们之间就发生了联。
一个程序被划分为若干模块时,联系既可存在于模块之间,也可存在于一个模块内的程序段或语句之间,即模块内部。
联系反映了系统中程序段或语句之间的关系,不同类型的联系构成不同质量的系统。
因此, 联系是系统设计必须考虑的重要问题。
系统被分成若干模块后,模块同模块的联系称为块间联系;一个模块内部各成份的联系称为块内联系。
显然,模块之间的联系多,则模块的相对独立性就差,系统结构就混乱;相反,模块间的 联系少,各个模块相对独立性就强,系统结构就比较理想。
同时,一个模块内部各成份联系越紧密,该模块越易理解和维护。
2评判模块结构的标准2.1模块独立性模块化是软件设计和开发的基本原则和方法,是概要设计最主要的工作。
模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。
根据软件设计的模块化、抽象、信息隐蔽和局部化等原则,可直接得出模块化独立性的概念。
所谓模块独立性,即:不同模块相互之间联系尽可能少,应尽可能减少公共的变量和数据结构;一个模块应尽可能在逻辑上独立,有完整单一的功能。
模块独立性(Module independence)是软件设计的重要原则。
具有良好独立性的模块划分,模块功能完整独立,数据接口简单,程序易于实现,易于理解和维护。
独立性限制了错误的作用范围,使错误易于排除,因而可使软件开发速度快,质量高。
为了进一步测量和分析模块独立性,软件工程学引入了两个概念,从两个方面来定性地度量模块独立性的程度,这两个概念是模块的内聚度和模块的耦合度。
2.2块间联系的度量—耦合度耦合度是从模块外部考察模块的独立性程度。
它用来衡量多个模块间的相互联系。
一般来说,耦合度应从以下三方面来考虑,即:耦合内容的数量,即模块间发生联系的数据和代码的多少,同这些数据和代码发生联系的模块的多少,多的耦合强,少的耦合弱;模块的调用方式,即模块间代码的共享方式。
软件设计模块划分应遵循的准则

软件设计模块划分应遵循的准则
1.单一职责原则:每个模块应该只负责一项职责,避免模块的职责过于复杂,难以维护和修改。
2. 开闭原则:模块应该对扩展开放,对修改关闭。
即当需求变
化时,应该通过扩展模块来实现,而不是修改已有的模块。
3. 依赖倒置原则:高层模块不应该依赖底层模块,而是应该依
赖抽象接口。
即模块之间应该通过接口而非具体实现进行通信。
4. 接口隔离原则:模块之间的接口应该精简而简单,避免不必
要的依赖。
即每个模块应该只依赖它所需要的接口,而非依赖整个系统的接口。
5. 迪米特法则:模块应该尽可能减少对其他模块的依赖,降低
模块之间的耦合度。
即每个模块应该只和它需要通信的模块进行交互。
- 1 -。
《office高级应用》试题

《office高级应用》试题1、程序流程图中带有箭头的线段表示的是()。
A.图元关系B.数据流C.控制流D.调用关系2、结构化程序设计的基本原则不包括()。
A.多态性B.自顶向下C.模块化D.逐步求精3、软件设计中模块划分应遵循的准则是()。
A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合4、在软件开发中,需求分析阶段产生的主要文档是()。
A.可行性分析报告B.软件需求规格说明书C.概要设计说明书D.集成测试计划5、算法的有穷性是指()。
A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用6、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。
A.快速排序B.冒泡排序C.直接插入排序D.堆排序7、下列关于栈的叙述正确的是()。
A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据8、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。
A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段9、在数据管理技术发展的三个阶段中,数据共享最好的是()。
A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同10、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。
A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩11、世界上公认的第一台电子计算机诞生在()。
A.中国B.美国C.英国D.日本12、下列关于ASCⅡ编码的叙述中,正确的是()。
A.一个字符的标准ASCⅡ码占一个字节,其最高二进制位总为1B.所有大写英文字母的ASCⅡ码值都小于小写英文字母‘a’的ASCⅡ码值C.所有大写英文字母的ASCⅡ码值都大于小写英文字母‘a’的ASCⅡ码值D.标准ASCⅡ码表有256个不同的字符编码13、CPU主要技术性能指标有()。
软件工程与应用姜楠课后答案

软件工程与应用姜楠课后答案1. 软件设计中模块划分应遵循的准则是()。
[单选题] *低内聚低耦合高内聚高耦合低内聚高耦合高内聚低耦合(正确答案)答案解析:软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。
模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。
模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。
2. 软件测试的目的是()。
[单选题] *评估软件可靠性改正程序中的错误发现程序中的错误(正确答案)发现并改正程序中的错误答案解析:软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。
不是为了评估软件或改正错误。
3. 在软件开发中,需求分析阶段产生的主要文档是()。
[单选题] *可行性分析报告软件需求规格说明书(正确答案)概要设计说明书集成测试计划答案解析:A错误,可行性分析阶段产生可行性分析报告。
C错误,概要设计说明书是总体设计阶段产生的文档。
D错误,集成测试计划是在概要设计阶段编写的文档。
B正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。
4. 在软件开发中,需求分析阶段产生的主要文档是()。
[单选题] *软件需求规格说明书(正确答案)用户手册软件集成测试计划软件详细设计说明书答案解析:】需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。
所以选择A。
5. 数据字典(DD)所定义的对象都包含于() [单选题] *程序流程图数据流图(DFD图)(正确答案)软件结构图方框图答案解析:在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典。
因此选A,而B,C,D都不符合。
6. 下面属于黑盒测试方法的是()。
[单选题] *语句覆盖逻辑覆盖边界值分析(正确答案)路径覆盖答案解析:黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。
普通高级研发人员题目

普通研发人员笔试题目第一部分1.(单选)软件设计中模块划分应该遵循的准则是:A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合2.(单选)最坏情况下时间复杂度不是n(n-1)/2的排序算法是:A.快速排序B.冒泡排序C.直接插入排序D.堆排序3.什么是NP问题?列举典型的NP问题(至少两个)对于一个给定的问题你通常如何判断它是否为NP问题第二部分1. 输入任意个字符串,将其中的小写字母变为大写,大写字母变为小写,其他字符不用处理;输入描述:任意字符串:abcd12#%XYZ输出描述:输出字符串:ABCD12#%xyz示例1:输入: abcd12#%XYZ输出: ABCD12#%xyz2. 小偷来到了一个神秘的王宫,突然眼前一亮,发现5个宝贝,每个宝贝的价值都不一样,且重量也不一样,但是小偷的背包携带重量有限,所以他不得不在宝贝中做出选择,才能使偷到的财富最大,请你帮助小偷计算一下。
输入描述:宝贝价值:6,3,5,4,6宝贝重量:2,2,6,5,4小偷背包容量:10输出描述:偷到宝贝的总价值:15示例1输入6,3,5,4,62,2,6,5,410输出15普通研发人员结构化面试题目权重:1.业务技术能力60%(1-6)2.沟通表达能力10%(7)3.抗压能力10%(8)4.主动学习能力10%(9)5.稳定性10%(10)题目:1.常见的软件开发模式有哪些,哪种适用于适用于需求明确或很少变更的项目,请描述你使用过的项目开发模式2.请介绍一下通用的总线读/写时序3.你怎么制定一个项目的中期,近期计划,请举例说明4.你怎么应对项目开发过程中的需求经常性变更5.您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程6.需求测试注意事项有哪些7.你觉得跟什么样的人共事比较困难?8.个人对加班怎么看?9.如果在一个项目中,你遇到一个比较棘手的问题,是怎样解决,举几个例子说明?10.你找工作时,最重要的考虑因素为何?高级研发人员笔试题目第一部分1.(单选)软件设计中模块划分应该遵循的准则是:A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合2.(单选)最坏情况下时间复杂度不是n(n-1)/2的排序算法是:A.快速排序B.冒泡排序C.直接插入排序D.堆排序3.什么是NP问题?列举典型的NP问题(至少两个)对于一个给定的问题你通常如何判断它是否为NP问题第二部分1. 输入任意个字符串,将其中的小写字母变为大写,大写字母变为小写,其他字符不用处理;输入描述:任意字符串:abcd12#%XYZ输出描述:输出字符串:ABCD12#%xyz示例1:输入: abcd12#%XYZ输出: ABCD12#%xyz2. 小偷来到了一个神秘的王宫,突然眼前一亮,发现5个宝贝,每个宝贝的价值都不一样,且重量也不一样,但是小偷的背包携带重量有限,所以他不得不在宝贝中做出选择,才能使偷到的财富最大,请你帮助小偷计算一下。
软件工程的基本原则

软件工程的基本原则
软件工程的基本原则是指在软件开发过程中,遵循一些基本的准则和规范,以确保软件开发的质量和效率。
以下是软件工程的基本原则:
1. 模块化:将软件划分为小的、可独立完成的模块,以便于开发、测试和维护。
2. 可重用性:将常用的代码封装为独立的模块,以便在不同的项目中复用,提高开发效率。
3. 面向对象:使用面向对象的编程技术,将数据和行为组织在一起,提高软件的可维护性和可扩展性。
4. 静态分析:使用工具对代码进行静态分析,检查代码中的错误和潜在问题,提高软件的质量。
5. 可追溯性:在整个开发过程中,记录每一个决策和变更,以便于在需要的时候进行追溯和回溯。
6. 测试驱动开发:在开发过程中,先编写测试用例,再编写代码,以确保代码符合需求,并且具备可测试性。
7. 持续集成:将代码频繁地集成到主干分支中,以便于快速发现和修复问题,提高开发效率。
8. 自动化:使用自动化工具,例如自动化测试工具、自动化构建工具等,以提高开发效率和软件质量。
以上是软件工程的基本原则,这些原则是软件开发人员必须遵循的准则,可以帮助开发人员开发出高质量、易维护、易扩展的软
件。
划分开发层系的一般原则

划分开发层系的一般原则划分开发层系的一般原则是为了实现软件的模块化、可维护性和可扩展性。
一个合理的开发层系可以帮助开发团队在项目开发过程中更好地分工合作,并将各个模块之间的依赖关系降到最低。
以下是一些划分开发层系的一般原则:1.单一责任原则:每个模块或层应该有一个明确的责任。
如果一个模块负责过多的功能,会导致代码难以维护和理解。
通过将不同的功能模块划分到不同的层中,可以使得每个层都有自己明确的职责。
3.分层结构:开发层系可以按照不同的职责和关注点划分。
常见的分层结构包括表示层、业务逻辑层和数据访问层。
表示层负责与用户交互,业务逻辑层负责处理业务逻辑,数据访问层负责访问数据库或其他数据存储。
4.清晰的接口定义:每个模块或层都应该有清晰的接口定义,以便其他模块可以与之交互。
通过明确的接口定义,可以降低模块之间的耦合度,同时也方便团队成员之间的协同开发。
5.可重用性:划分开发层系时,应该考虑哪些模块可以在不同的项目中复用。
通过将具有通用性的模块划分到独立的层中,可以提高代码的可重用性和开发效率。
6.安全性和性能:开发层系的划分需要考虑安全性和性能的要求。
可以将与安全相关的代码放到独立的安全层中,以便更好地管理和保护敏感信息。
同时,可以将性能相关的代码划分到独立的性能层中,以便更好地优化系统性能。
7.可测试性:每个模块或层应该具有良好的可测试性。
通过将功能划分到独立的层中,可以更容易地编写和运行单元测试,并帮助开发团队发现和解决潜在的问题。
总之,划分开发层系的一般原则是为了实现代码的模块化、可维护性和可扩展性。
通过合理的设计和划分,可以提高代码的质量和开发效率,同时也增强了团队的协作能力和项目的可持续性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内聚度和耦合度
ZT: ZhangHui. 2011.03.09
1联系
当一个程序段或语句(指令)引用了其它程序段或语句(指令)中所定义或使用的数据名(即存贮区、地址等)或代码时,他们之间就发生了联。
一个程序被划分为若干模块时,联系既可存在于模块之间,也可存在于一个模块内的程序段或语句之间,即模块内部。
联系反映了系统中程序段或语句之间的关系,不同类型的联系构成不同质量的系统。
因此, 联系是系统设计必须考虑的重要问题。
系统被分成若干模块后,模块同模块的联系称为块间联系;一个模块内部各成份的联系称为块内联系。
显然,模块之间的联系多,则模块的相对独立性就差,系统结构就混乱;相反,模块间的 联系少,各个模块相对独立性就强,系统结构就比较理想。
同时,一个模块内部各成份联系越紧密,该模块越易理解和维护。
2评判模块结构的标准
2.1模块独立性
模块化是软件设计和开发的基本原则和方法,是概要设计最主要的工作。
模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。
根据软件设计的模块化、抽象、信息隐蔽和局部化等原则,可直接得出模块化独立性的概念。
所谓模块独立性,即:不同模块相互之间联系尽可能少,应尽可能减少公共的变量和数据结构;一个模块应尽可能在逻辑上独立,有完整单一的功能。
模块独立性(Module independence)是软件设计的重要原则。
具有良好独立性的模块划分,模块功能完整独立,数据接口简单,程序易于实现,易于理解和维护。
独立性限制了错误的作用范围,使错误易于排除,因而可使软件开发速度快,质量高。
为了进一步测量和分析模块独立性,软件工程学引入了两个概念,从两个方面来定性地度量模块独立性的程度,这两个概念是模块的内聚度和模块的耦合度。
2.2块间联系的度量—耦合度
耦合度是从模块外部考察模块的独立性程度。
它用来衡量多个模块间的相互联系。
一般来
说,耦合度应从以下三方面来考虑,即:
耦合内容的数量,即模块间发生联系的数据和代码的多少,同这些数据和代码发生联系的模块的多少,多的耦合强,少的耦合弱;
模块的调用方式,即模块间代码的共享方式。
可分为用CALL语句调用方式和用GOTO语句直接访问方式;
模块间的耦合类型。
耦合类型有以下几种方式:①独立耦合、②数据耦合、③控制耦合、④公共耦合、⑤内容耦合
下面重点对各种类型的耦合作进一步的说明。
(1)独立耦合
指两个模块彼此完全独立,没有直接联系。
它们之间的唯一联系仅仅在于它们同属于一个软件系统或同有一个上层模块。
这是耦合程度最低的一种。
当然,系统中只可能有一部分模块属此种联系,因为一个程序系统中不可能所有的模块都完全没有联系。
(2)数据耦合
指两个模块彼此交换数据。
如一个模块的输出数据是另一个模块的输入数据,或一个模块带参数调用另一个模块,下层模块又返回参数。
应该说,在一个软件系统中,此种耦合是不可避免的,且有其积极意义。
因为任何功能的实现都离不开数据的产生、表示和传递。
数据耦合的联系程度也较低。
(3)控制耦合
若在调用过程中,两个模块间传递的不是数据参数而是控制参数,则模块间的关系即为控制耦合。
控制耦合属于中等程度的耦合,较之数据耦合模块间的联系更为紧密。
但控制耦合不是一种必须存在的耦合。
当被调用模块接收到控制信息作为输入参数时,说明该模块内部存在多个并列的逻辑路径,即有多个功能。
控制变量用以从多个功能中选择所要执行的部分,因而控制耦合是完全可以避免的。
排除控制耦合可按如下步骤进行:
1)找出模块调用时所用的一个或多个控制变量;
2)在被调模块中根据控制变量找出所有的流程;
3)将每一个流程分解为一个独立的模块;
4)将原被调模块中的流程选择部分移到上层模块,变为调用判断。
通过以上变换,可以将控制耦合变为数据耦合。
由于控制耦合增加了设计和理解的复杂程度,因此在模块设计时要尽量避免使用。
当然,如果模块内每一个控制流程规模相对较小,彼
此共性较多,使用控制耦合还是合算的。
(4)公共耦合
公共耦合又称公共环境耦合或数据区耦合。
若多个模块对同一个数据区进行存取操作, 它们之间的关系称为公共耦合。
公共数据区可以是全程变量、共享的数据区、内存的公共复盖区、外存上的文件、物理设备等。
当两个模块共享的数据很多,通过参数传递可能不方便时,可以使用公共耦合。
公共耦合共享数据区的模块越多,数据区的规模越大,则耦合程度越强。
公共耦合最弱的一种形式是:两个模块共享一个数据变量,一个模块只向里写数据,另一个模块只从里读数据。
当公共耦合程度很强时,会造成关系错综复杂,难以控制,错误传递机会增加,系统可靠性降低,可理解、维护性差。
(5)内容耦合
内容耦合是耦合程序最高的一种形式。
若一个模块直接访问另一模块的内部代码或数据,即出现内容耦合。
内容耦合的存在严重破坏了模块的独立性和系统的结构化,代码互相纠缠,运行错综复杂,程序的静态结构和动态结构很不一致,其恶劣结果往往不可预测。
内容耦合往往表现为以下几种形式:
➢一个模块访问另一模块的内部代码或数据;
➢一个模块不通过正常入口而转到另一个模块的内部(如使用GOTO语句或JMP指令直接进入另一模块内部);
➢两个模块有一部分代码重迭(可能出现在汇编程序中,在一些非结构化的高级语言,如COBOL中也可能出现);
➢一个模块有多个入口(这意味着一个模块有多种功能)。
一般讲,在模块划分时,应当尽量使用数据耦合,少用控制耦合(尽量转成数据耦合),限制公共耦合的范围,完全不用内容耦合。
2.3块内联系的度量——内聚度
内聚度(Co h e s ion)是模块内部各成份(语句或语句段)之间的联系。
显然,模块内部各成份联系越紧,即其内聚度越大,模块独立性就越强,系统越易理解和维护。
具有良好内聚度的模块应能较好地满足信息局部化的原则,功能完整单一。
同时,模块的高内聚度必然导致模块的低耦合度。
理想的情况是:一个模块只使用局部数据变量,完成一个功能。
按由弱到强的顺序,模块的内聚度可分为以下7类,现分述于下。
(1)偶然内聚
块内的各个任务(通过语句或指令来实现的)没有什么有意义的联系,它们之所以能构成一个模块完全是偶然的原因。
偶然内聚的模块有很多缺点:由于模块内没有实质性的联系,很可能在某种情况下一个调用模块需要对它修改而别的模块不需要。
这时就很难处理。
同时,这种模块的含义也不易理解,甚至难以为它取一个合适的名字,偶然内聚的模块也难于测试。
所以,在空间允许的情况下,不应使用这种模块。
(2)逻辑内聚
一个模块完成的任务在逻辑上属于相同或相似的一类(例如,用一个模块产生各种类型的输出),则该种模块内的联系称为逻辑内聚。
逻辑内聚存在的问题是:
➢修改困难,调用模块中有一个要对其改动,还要考虑到其它调用模块;
➢模块内需要增加开关,以判别是谁调用,因而增加了块间联系;
➢实际上每次调用只执行模块中的一部分,而其它部分也一同被装入内存,因而效率不高。
(3)时间内聚
时间内聚是指一个模块中包含的任务需要在同一时间内执行(如初始化,结束等所需操作)。
但时间内聚和偶然内聚、逻辑内聚一样,都属低内聚度类型。
(4)过程内聚
如果一个模块内的各个处理元素是相关的,而且必须按固定的次序执行,这种内聚就叫做过程内聚。
过程内聚的各模块内往往体现为有次序的流程。
(5)通信内聚
若一个模块中的各处理元素需引用共同的数据(同一数据项、数据区或文件),则称其元素间的联系为通信内聚。
通信内聚的各部分间是借助共同使用的数据联系在一起的,故有较好的可理解性。
(6)顺序内聚
若一个模块内的各处理元素关系密切,必须按规定的处理次序顺序执行,这样的模块为顺序内聚类型。
顺序内聚的模块内,后执行的语句或语句段往往依赖先执行的语句或语句段,以先执行的部分为条件。
由于模块内各处理元素间存在着这种逻辑联系,所以顺序内聚模块的可理解性很强,属高内聚度类型模块。
(7)功能内聚
功能内聚是内聚度最高的一种模块类型。
如果模块仅完成一个单一的功能,且该模块的所有部分是实现这一功能所必须的,没有多余的语句,则该模块为功能内聚。
功能内聚模块的结
构紧凑、界面清晰,易于理解和维护,因而可靠性强;又由于其功能单一,故复用率高。
所以它是模块划分时应注意追求的一种模块类型。
在模块设计时应力争做到高内聚,并且能够辨别出低内聚的模块,加以修改使之提高内聚度并降低模块间的耦合度。
具体设计时,应注意:
1)设计功能独立单一的模块;
2)控制使用全局数据;
3)模块间尽量传递数据型信息。