软考高级:内聚的分类(偶然内聚、逻辑内聚等)概念和例题

2024-03-06 09:28

本文主要是介绍软考高级:内聚的分类(偶然内聚、逻辑内聚等)概念和例题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。

热门文章推荐

  • (1)《为什么很多人工作 3 年 却只有 1 年经验?》
  • (2)《一文掌握大模型提示词技巧:从战略到战术巧》
  • (3)《AI 时代,程序员的出路在何方?》
  • (4)《如何写出高质量的文章:从战略到战术》
  • (5)《我的技术学习方法论》
  • (6)《我的性能方法论》
  • (7)《AI 时代的学习方式: 和文档对话》

一、AI 讲解

1. 偶然内聚(Coincidental Cohesion)

偶然内聚是内聚度最低的一种类型。模块内的各个元素之间没有任何联系,它们只是偶然地被放在同一个模块中。例如,在一个模块中包含了以下三个语句:

move O to R
read file F
move S to T

这三个语句没有任何逻辑上的联系,它们只是被放在同一个模块中,以便于一起编译和执行。

2. 逻辑内聚(Logical Cohesion)

逻辑内聚是指模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。例如,在一个模块中包含了以下三个函数:

void add(int a, int b) {return a + b;
}void subtract(int a, int b) {return a - b;
}void multiply(int a, int b) {return a * b;
}

这三个函数都实现了基本的算术运算,它们之间有一定的逻辑联系。模块可以通过参数来选择执行哪个函数。

3. 时间内聚(Temporal Cohesion)

时间内聚是指把需要同时执行的动作组合在一起形成的模块。例如,在一个模块中包含了以下两个函数:

void init() {// 初始化系统
}void start() {// 启动系统
}

这两个函数必须同时执行才能完成系统的初始化和启动工作。因此,将它们放在同一个模块中可以提高代码的可读性和可维护性。

4. 过程内聚(Procedural Cohesion)

过程内聚是指一个模块完成多个任务,这些任务必须按指定的过程执行。例如,在一个模块中包含了以下三个函数:

void open_file(char *filename) {// 打开文件
}void read_file(char *buffer, int size) {// 读取文件
}void close_file() {// 关闭文件
}

这三个函数实现了打开、读取和关闭文件的操作。它们必须按顺序执行才能完成文件的读写操作。

5. 通信内聚(Communicational Cohesion)

通信内聚是指模块内的所有处理元素都在同一数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据。例如,在一个模块中包含了以下三个函数:

void add_student(Student *student) {// 添加学生信息
}void delete_student(int id) {// 删除学生信息
}void modify_student(Student *student) {// 修改学生信息
}

这三个函数都操作了同一个数据结构 Student。因此,将它们放在同一个模块中可以提高代码的可读性和可维护性。

6. 顺序内聚(Sequential Cohesion)

顺序内聚是指一个模块中的各个处理元素都密切相关于同一各功能且必须顺序执行,前一个功能元素的输出就是下一个功能的输入。例如,在一个模块中包含了以下三个函数:

void parse_input(char *input) {// 解析输入
}void process_input(char *input) {// 处理输入
}void generate_output(char *output) {// 生成输出
}

这三个函数实现了输入解析、处理和输出生成的功能。它们必须按顺序执行才能完成整个功能。

7. 功能内聚(Functional Cohesion)

功能内聚是内聚度最高的一种类型。指模块内的所有元素共同作用完成一个功能,缺一不可。例如,在一个模块中包含了以下三个函数:

void init_database() {// 初始化数据库
}void query_database(char *query) {// 查询数据库
}void close_database() {// 关闭数据库
}

这三个函数共同实现了数据库的初始化、查询和关闭功能。它们缺一不可,否则无法完成数据库的操作。

二、AI 出题

  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. 时间内聚通常在什么情况下出现?
    A. 当模块执行与时间无关的任务时
    B. 当模块的操作在程序的同一生命周期阶段执行
    C. 当模块包含不相关的操作时
    D. 当模块的所有操作都完成一个单一任务时

答案解析:

  1. C. 过程内聚
  2. B. 模块内的所有元素共同完成一个单一的任务
  3. C. 没有任何明显的关系
  4. B. 操作同一份数据或资源
  5. C. 顺序内聚的输出作为另一操作的输入
  6. B. 当模块的操作在程序的同一生命周期阶段执行

这篇关于软考高级:内聚的分类(偶然内聚、逻辑内聚等)概念和例题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779580

相关文章

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

mybatisplus的逻辑删除过程

《mybatisplus的逻辑删除过程》:本文主要介绍mybatisplus的逻辑删除过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录myBATisplus的逻辑删除1、在配置文件中添加逻辑删除的字段2、在实体类上加上@TableLogic3、业务层正常删除即

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

Java Stream 的 Collectors.toMap高级应用与最佳实践

《JavaStream的Collectors.toMap高级应用与最佳实践》文章讲解JavaStreamAPI中Collectors.toMap的使用,涵盖基础语法、键冲突处理、自定义Map... 目录一、基础用法回顾二、处理键冲突三、自定义 Map 实现类型四、处理 null 值五、复杂值类型转换六、处理