【愚公系列】软考高级-架构设计师 077-人机界面设计
🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
🚀前言
人机界面设计(Human-Computer Interface Design, HCI) 是设计用户与计算机系统之间交互的界面,确保用户能够高效、愉快地使用系统。
🚀一、人机界面设计
🔎1.三大黄金原则
在人机界面设计中,有三大黄金原则能够帮助设计师创建出用户友好且高效的界面。以下是这三大黄金原则的详细解释:
🦋1.1 置于用户控制之下
概念:确保用户对系统操作具有充分的控制权,使用户感觉自己在掌控整个交互过程。
细节:
- 可逆操作:提供撤销和恢复功能,使用户能够轻松纠正错误操作。
- 明确的导航路径:设计清晰的导航路径和返回功能,让用户知道自己在系统中的位置,并能轻松回到上一步。
- 操作确认:在关键操作(如删除、提交)前提供确认提示,防止用户误操作。
示例:一个文本编辑器应提供撤销和重做功能,使用户能够轻松恢复到之前的编辑状态。
🦋1.2 减少用户的记忆负担
概念:设计应尽量减少用户需要记忆的信息量,使用户能够专注于当前任务而无需记忆过多的步骤或数据。
细节:
- 直观的界面设计:使用清晰的标签和图标,使用户能够轻松识别和理解界面元素的功能。
- 简化的操作流程:通过合理的布局和分步操作,减少用户在操作过程中的记忆负担。
- 帮助和提示:提供即时的帮助信息和操作提示,帮助用户完成任务而无需记忆复杂的操作步骤。
示例:一个在线购物平台的结账流程应设计为分步操作,并在每一步提供清晰的说明和提示,帮助用户顺利完成结账。
🦋1.3 保持界面的一致性
概念:在界面设计中保持视觉和交互的一致性,使用户能够建立对系统的预期,减少学习成本和操作错误。
细节:
- 视觉一致性:使用一致的颜色、字体、图标和布局,确保界面的整体风格统一。
- 交互一致性:保持相似功能的操作方式一致,使用户能够通过类比快速掌握新功能。
- 风格指南:制定并遵循风格指南,确保不同部分的界面设计符合统一的标准和规范。
示例:一个企业内部管理系统的所有模块应使用相同的颜色主题和导航结构,使用户能够在不同模块间轻松切换而无需重新学习界面。
人机界面设计的三大黄金原则——置于用户控制之下、减少用户的记忆负担、保持界面的一致性——帮助设计师创建用户友好、直观且高效的界面。通过赋予用户控制权、简化操作流程和保持一致性,我们可以提升用户体验,确保用户能够顺利、高效地使用系统。
🚀二、练习
🔎1.题目一
题目内容:
“某模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一处理元素的输出就是下一处理元素的输入,则该模块的内聚类型为( )内聚。”
选项:
- A. 过程
- B. 时间
- C. 顺序
- D. 逻辑
关键词:
- 处理元素密切相关于同一功能:所有处理元素是为了实现同一个功能。
- 必须顺序执行:处理元素需要按特定顺序执行。
- 前一处理元素的输出就是下一处理元素的输入:每个处理元素的输出直接作为下一个处理元素的输入。
内聚(Cohesion)是模块内元素之间关联性的度量,描述模块内部元素的紧密程度。以下是选项中不同内聚类型的定义:
-
过程内聚(Procedural Cohesion):
- 定义:模块内的元素是按一定过程顺序执行的,但这些操作不一定是为了实现同一功能。
- 特点:虽然操作按顺序执行,但每个操作可以是独立的且不相关。
- 例子:一个函数先检查用户权限,然后打印报告,这两者并没有直接关联。
-
时间内聚(Temporal Cohesion):
- 定义:模块内的元素在同一时间段内执行,通常是初始化或清理操作。
- 特点:操作之间不一定有逻辑上的关联,只是因为要在同一时间进行。
- 例子:启动时进行的一系列初始化操作,比如加载配置文件、设置环境变量等。
-
顺序内聚(Sequential Cohesion):
- 定义:模块内的元素按特定顺序执行,每个元素的输出作为下一个元素的输入,形成一个顺序的流程。
- 特点:每个操作依赖前一个操作的输出来执行,所有操作共同实现一个功能。
- 例子:一个数据处理流程,从读取数据、处理数据到输出结果,每一步依赖上一步的结果。
-
逻辑内聚(Logical Cohesion):
- 定义:模块内的元素是逻辑相关的,但执行时可能选择其中一个操作。
- 特点:同一个模块内可能包含多个相关的功能操作,实际执行时会选择其中一个。
- 例子:一个函数可以根据不同的条件执行不同的操作,如读文件或写文件。
根据题目描述,模块中的各个处理元素需要密切相关于同一功能且必须顺序执行,每个处理元素的输出直接作为下一个处理元素的输入。这些特点与**顺序内聚(Sequential Cohesion)**的定义最为一致。
- 处理元素密切相关于同一功能:所有处理元素都围绕一个功能展开。
- 必须顺序执行:操作需要按特定顺序进行。
- 前一处理元素的输出是下一处理元素的输入:形成一个依赖链,每一步都依赖于前一步的结果。
因此,该模块的内聚类型为顺序内聚。
- C. 顺序
这个选择符合题目中的描述,准确反映了顺序内聚的定义。
🔎2.题目二
题目内容:
“已知模块A给模块B传递数据结构X,则这两个模块的耦合类型为( )”
选项:
- A. 数据耦合
- B. 公共耦合
- C. 外部耦合
- D. 标记耦合
耦合(Coupling)是指模块之间相互依赖和联系的程度。以下是各个耦合类型的定义:
-
数据耦合(Data Coupling):
- 定义:模块之间通过简单的数据参数传递(如整数、浮点数、字符等)进行通信,没有其他依赖。
- 特点:耦合度较低,模块间仅通过简单的数据参数交换。
- 例子:模块A调用模块B时,传递一个或多个基本数据类型的参数。
-
公共耦合(Common Coupling):
- 定义:模块之间通过共享全局变量进行通信。
- 特点:耦合度较高,多个模块都依赖于同一个全局变量,改变全局变量会影响所有依赖它的模块。
- 例子:模块A和模块B都访问和修改同一个全局变量。
-
外部耦合(External Coupling):
- 定义:模块之间通过外部接口、文件或设备等进行通信。
- 特点:耦合度取决于外部接口的复杂性和依赖性。
- 例子:模块A和模块B通过文件系统或外部设备进行数据交换。
-
标记耦合(Stamp Coupling/Control Coupling):
- 定义:模块之间通过复合数据结构(如结构体、对象等)传递数据。
- 特点:耦合度比数据耦合高,传递的数据结构包含多种数据,增加了模块间的依赖复杂性。
- 例子:模块A将一个包含多个字段的结构体传递给模块B。
根据题目描述,模块A给模块B传递数据结构X。这种情况符合**标记耦合(Stamp Coupling/Control Coupling)**的定义。
- 传递数据结构X:这里的数据结构X通常是复合数据结构,包含多个数据项或字段。
- 模块间通过数据结构进行通信:这种传递方式不是简单的基本数据类型,而是更复杂的结构体或对象。
因此,这两个模块的耦合类型为标记耦合。
- D. 标记耦合
这个选择符合题目中的描述,准确反映了标记耦合的定义。
🔎3.题目三
题目内容:
“系统设计是根据系统分析的结果,完成系统的构建过程。系统设计的主要内容包括();系统总体结构设计的主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的( )”
选项1:
- A. 概要设计和详细设计
- B. 架构设计和对象设计
- C. 部署设计和用例设计
- D. 功能设计和模块设计
选项2:
- A. 用例图
- B. 模块结构图
- C. 系统部署图
- D. 类图
系统设计是根据系统分析的结果,完成系统的构建过程,通常包括以下内容:
-
概要设计:
- 定义:也称为高层设计,概述系统的总体结构和功能模块的划分,定义系统的体系结构和主要组件。
- 特点:关注系统的整体架构和模块的功能分配。
-
详细设计:
- 定义:也称为低层设计,详细描述每个模块的内部逻辑和实现细节,包括数据结构、算法和接口等。
- 特点:关注每个模块的具体实现细节和逻辑。
从题目描述来看,系统设计的主要内容是基于系统分析的结果,完成系统的构建过程,这符合概要设计和详细设计的定义。因此,第一部分答案是:
- A. 概要设计和详细设计
系统总体结构设计的主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,这通常通过模块结构图来表示。模块结构图展示了系统的各个模块及其相互关系和调用方式。
从题目描述来看,系统总体结构设计的任务是分配功能需求并确定模块间的调用关系,这符合模块结构图的定义。因此,第二部分答案是:
- B. 模块结构图
根据题目描述,系统设计的主要内容包括概要设计和详细设计;系统总体结构设计的主要任务是形成软件的模块结构图。
- 第一部分:A. 概要设计和详细设计
- 第二部分:B. 模块结构图
🔎4.题目四
题目内容:
“以下关于软件系统模块结构设计的叙述中,正确的是( )。”
选项:
- A. 当模块扇出过大时,应把下级模块进一步分解为若干个子模块
- B. 当模块扇出过小时,应适当增加中间的控制模块
- C. 模块的扇入大,表示模块的复杂度较高
- D. 模块的扇入大,表示模块的复用程度高
关键词解释
-
模块扇出(Fan-out):
- 定义:一个模块直接控制的下级模块的数量。
- 扇出过大:表示一个模块控制了过多的下级模块,可能导致复杂度和管理上的困难。
-
模块扇入(Fan-in):
- 定义:其他模块调用该模块的次数。
- 扇入大:表示许多模块依赖于该模块,可能表示高复用性,但也可能导致复杂度增加。
A. 当模块扇出过大时,应把下级模块进一步分解为若干个子模块
解析:当一个模块控制的下级模块过多(扇出过大)时,可以考虑将这些下级模块进一步分解为若干子模块,以减少每个模块的复杂度和控制范围。这样可以提高系统的可维护性和可理解性。这种方法是符合模块化设计的原则的。
B. 当模块扇出过小时,应适当增加中间的控制模块
解析:模块扇出过小时,意味着一个模块控制的下级模块数量较少,这并不一定是一个需要解决的问题。增加中间的控制模块会增加系统的复杂度和层次,不一定是优化设计的合理方法。因此,这个选项不合理。
C. 模块的扇入大,表示模块的复杂度较高
解析:模块的扇入大,表示有许多模块依赖于这个模块。虽然这可能增加该模块的复杂度,但扇入大的模块不一定复杂。扇入大的模块通常是一个通用模块,提供基本服务或功能。复杂度不仅仅取决于调用的次数,还取决于模块的内部逻辑和实现。
D. 模块的扇入大,表示模块的复用程度高
解析:模块的扇入大,确实表示有许多其他模块依赖于它,这通常意味着该模块的复用程度高。高复用性是一个模块设计良好的标志,说明该模块提供了通用和有用的功能,因此被许多模块调用。
根据以上分析,正确的选项是:
- D. 模块的扇入大,表示模块的复用程度高
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”
- 点赞
- 收藏
- 关注作者
评论(0)