📖 3.3 结构化设计中的接口设计
💡 核心定义
软件工程核心考点 概要设计核心环节接口设计是结构化设计的核心支撑环节,其本质是定义系统各交互主体之间的交互契约、通信规则与数据标准,是实现模块间协作、系统与外部环境交互的唯一桥梁,直接决定了软件系统的可维护性、可扩展性、兼容性与易用性,贯穿软件概要设计与详细设计全流程。
🖥️ 3.3.1 软件与人之间的交互界面设计
用户需求最终落地载体 系统顶层对外接口软件与人之间的交互界面(简称人机交互界面/用户界面UI),是软件系统与终端用户之间的唯一交互入口,是结构化设计中系统顶层边界的核心组成部分。用户对系统的所有功能操作、数据输入、结果获取,都必须通过该接口完成,其设计质量直接决定用户对系统的接受度与使用效率。
一、设计定位与核心目标
在结构化设计流程中,人机交互界面设计分为两个阶段:
- 概要设计阶段:完成用户分层、信息架构搭建、核心业务交互流程定义,确定界面的整体框架与分层逻辑,匹配自顶向下的结构化设计思路;
- 详细设计阶段:完成页面布局、控件规范、反馈体系、异常处理的细节定义,输出标准化的界面设计规范。
核心设计目标:以用户为中心,构建逻辑清晰、操作线性、反馈及时、容错性强的交互体系,降低用户的认知成本与操作负担,确保用户能够高效、准确、无负担地完成业务操作,同时完全匹配系统底层的模块化业务逻辑。
二、核心设计原则
⚠️ 设计重难点-必掌握
一致性原则 核心原则 全系统的界面布局、操作逻辑、术语定义、控件样式、反馈格式保持100%统一,符合结构化设计的标准化要求,避免用户在不同功能页面产生认知混乱。例如:统一的确认取消按钮位置、统一的成功/错误提示样式、统一的菜单导航逻辑。
尼尔森十大可用性原则 行业通用标准 该原则是人机交互设计的核心教学内容,是结构化设计中界面设计的核心参考规范:
| 原则名称 | 核心设计要求 | 结构化设计适配要点 |
|---|---|---|
| 系统状态可见性 | 用户操作后必须提供及时、明确的系统状态反馈 | 匹配结构化设计的线性流程,每一步操作都有明确的状态闭环 |
| 系统与现实世界匹配 | 界面术语、操作逻辑符合用户的行业习惯与认知常识 | 避免技术化术语,贴合业务场景的自然流程 |
| 用户可控与自由原则 | 支持用户误操作后的撤销、回退、中途退出能力 | 线性操作流程中设置回退入口,关键操作二次确认 |
| 一致性与标准化 | 同含义的操作、术语、样式全系统保持统一 | 完全匹配结构化设计的标准化设计核心要求 |
| 错误预防原则 | 提前拦截用户的非法操作,从源头避免错误发生 | 前置校验操作权限、输入格式、业务规则,禁止无效操作 |
| 识别优于回忆原则 | 降低用户的记忆负担,操作选项、功能入口可视化呈现 | 功能分级收纳,核心功能常驻可见,避免多层级隐藏 |
| 使用灵活与高效 | 兼顾新手用户与资深用户的操作需求,支持快捷键、批量操作 | 基础操作线性引导,高级操作分级开放 |
| 美学与极简设计 | 界面仅呈现与当前操作相关的信息,剔除无关干扰内容 | 匹配结构化设计的逐步求精思路,主页面仅保留核心功能 |
| 容错与帮助原则 | 错误提示清晰说明问题原因,并给出可执行的解决方案 | 异常场景不崩溃,给出明确的修复指引,不抛出技术化报错 |
| 帮助与文档原则 | 提供轻量化、场景化的帮助指引,贴合用户的操作场景 | 核心功能提供操作引导,复杂业务提供分步说明 |
最小负担原则 界面信息与操作步骤严格遵循自顶向下的分层逻辑,主界面仅呈现核心业务功能,次级功能分级收纳,每一个页面仅聚焦一个核心业务场景,减少无关信息对用户的干扰,将复杂业务拆解为线性的、分步的操作步骤,降低用户的操作复杂度与认知负担。
容错与防错原则 通过操作权限拦截、输入格式前置校验、关键操作二次确认、操作撤销回退机制,从源头避免用户误操作;同时在错误发生时,提供清晰、无技术术语的错误提示与可执行的解决指引,绝对禁止因用户的异常操作导致系统级崩溃或数据丢失。
三、完整设计流程与核心内容
按照结构化设计自顶向下、逐步求精的思路,人机交互界面设计分为6个标准化步骤,逻辑递进如下:
用户分层与需求建模 基于系统业务场景,对终端用户进行分层,明确不同用户的角色、权限、核心操作需求与操作习惯,为不同角色的用户设计匹配的界面与功能权限,避免功能堆砌。
信息架构与功能分层设计 按照结构化分解的思路,对系统全量功能与信息进行层级划分,明确一级主菜单、二级子功能、三级操作页面的层级关系,构建树形的信息架构,确保功能导航逻辑清晰、路径唯一,避免出现功能交叉、路径混乱的问题。
核心业务交互流程设计 基于用户的核心业务场景,将复杂业务拆解为线性的、分步的、无分支闭环的操作步骤,符合结构化设计逐步求精的核心思路,每一个步骤仅完成一个子操作,流程有明确的开始与结束节点,避免用户在操作过程中迷失方向。
界面布局与控件标准化设计 对全系统的页面进行标准化的区域划分,统一定义顶部导航区、左侧菜单区、右侧内容操作区、底部状态栏的边界与尺寸;同时统一定义按钮、输入框、下拉框、表格、弹窗等所有控件的样式、尺寸、使用规则,确保全系统界面的一致性。
反馈体系与异常处理设计 定义全系统统一的反馈体系,包括:正常操作的成功提示、长时操作的加载状态、非法操作的警告提示、系统错误的报错提示;同时明确所有异常场景的处理规则,包括用户误操作、非法输入、权限不足、网络异常等场景的处理逻辑,确保系统的稳定性。
可用性测试与迭代优化 基于目标用户群体,开展可用性测试,验证界面的操作效率、易学性、容错性,收集用户的操作痛点,基于测试结果对界面设计进行迭代优化,确保最终的界面设计完全匹配用户的使用需求。
四、常见设计误区
🔍 拓展查看常见误区
- 功能堆砌:将所有功能全部堆放在主界面,不做分级收纳,导致用户找不到核心功能;
- 逻辑混乱:操作流程分支过多,无明确的线性闭环,用户操作过程中容易迷失;
- 反馈缺失:用户操作后无任何状态反馈,用户无法判断操作是否执行成功;
- 一致性差:不同页面的操作逻辑、术语、控件样式不统一,用户需要反复适应;
- 容错性差:无前置校验,无二次确认,无撤销机制,用户误操作后无法挽回,甚至导致系统崩溃;
- 技术化术语泛滥:界面使用大量开发技术术语,普通用户无法理解。
🔌 3.3.2 软件与硬件及其他软件系统之间的接口设计
系统边界定义 系统集成核心本部分接口统称为系统外部接口,定义了软件系统与外部硬件设备、第三方软件系统、数据库/中间件之间的交互规则,是结构化设计中系统边界的核心定义内容。其核心目标是通过标准化的接口契约,屏蔽外部环境的底层差异,实现系统与外部环境的稳定、高效、安全交互,同时将系统与外部环境的耦合度降到最低。
在结构化设计流程中,概要设计阶段需完成外部接口的整体框架定义,明确接口类型、通信方式、核心交互场景;详细设计阶段需完成接口的报文格式、参数约定、安全规则、异常处理等细节规范。
一、软件与硬件之间的接口设计
软件与硬件的接口,是软件系统控制硬件设备、获取硬件采集数据、调用硬件能力的交互契约,是嵌入式系统、物联网系统、工业控制系统、带外设控制的业务系统中核心的设计内容。
📋 核心设计内容与规范
通信协议与底层参数约定 明确软件与硬件之间的通信方式与标准化协议,是硬件接口设计的基础,需严格定义以下内容:
- 通信方式:串口(RS232/RS485)、USB、以太网(TCP/IP/UDP)、蓝牙、SPI、I2C等;
- 通信参数:串口通信的波特率、数据位、停止位、校验位;网络通信的IP地址、端口号、超时时间、重连机制;
- 通信规则:主从模式/点对点模式、通信时序、握手规则、心跳保活机制。
常用通信方式 适用硬件场景 结构化设计适配要点 RS232/RS485串口 工业传感器、热敏打印机、扫码枪、门禁设备 封装为标准化的串口操作接口,屏蔽底层参数差异 USB-HID 键盘、鼠标、扫码枪、U盾等免驱外设 遵循USB-HID标准协议,封装统一的设备识别与数据读取接口 TCP/IP以太网 网络摄像头、门禁控制器、工业网关、智能设备 定义标准化的报文格式,实现稳定的长连接/短连接通信 SPI/I2C 嵌入式板载芯片、传感器、显示屏 底层驱动封装,向上层提供极简的寄存器读写接口 指令集与数据解析规则定义 按照结构化设计信息隐藏的原则,统一定义软件与硬件之间的交互指令集与数据解析规则:
- 控制指令集:定义软件向硬件发送的所有控制指令,包括指令的功能码、数据段格式、长度约束、校验位规则,每个指令仅对应一个硬件操作,符合高内聚原则;
- 数据解析规则:定义硬件向软件返回的状态数据、采集数据的编码格式、字节序、解析逻辑,明确每个数据段的业务含义、数据类型、取值范围;
- 校验规则:定义数据传输的校验方式,如CRC校验、和校验、奇偶校验,确保数据传输的准确性。
硬件状态监测与异常处理机制 明确硬件设备的全生命周期状态管理规则,包括:设备连接/断开状态监测、运行状态上报、故障状态识别与告警、异常恢复机制;同时定义软件对硬件异常的处理逻辑,如超时重发、故障隔离、降级运行,绝对禁止因硬件异常导致系统整体崩溃。
硬件能力标准化封装 严格遵循结构化设计的信息隐藏原则,将硬件的底层通信、指令发送、数据解析、异常处理逻辑,全部封装为标准化的、功能单一的接口函数,向上层业务模块屏蔽硬件的底层差异。上层业务模块仅需通过统一的接口调用硬件能力,无需关注硬件的型号、通信协议、底层实现细节,实现业务逻辑与硬件驱动的解耦。
二、软件与其他软件系统之间的接口设计
软件与其他软件系统的接口(简称系统集成接口),是本系统与第三方业务系统、平台服务、数据库、中间件等外部软件实体之间的交互契约,是实现多系统间数据共享、业务协同的核心支撑,也是企业级软件系统设计的核心内容。
📋 核心设计内容与规范
⚠️ 核心设计思想-契约式设计
结构化设计核心规范契约式设计(Design by Contract)是外部接口设计的核心思想,与结构化设计高度匹配,其核心是定义接口交互双方的前置条件、后置条件、不变式:
- 前置条件:接口调用方必须满足的条件,如参数合法性、身份鉴权、权限校验,只有前置条件满足,接口才会执行;
- 后置条件:接口执行完成后,必须保证的结果,如返回值格式、数据状态、业务执行结果;
- 不变式:接口执行前后,始终保持不变的约束条件,如核心数据的完整性、业务规则的一致性。
交互模式与通信协议约定 明确系统间的交互模式与标准化通信协议,是接口设计的基础,核心分类与适用场景如下:
交互模式 核心特点 适用业务场景 常用通信协议 同步调用 请求-响应模式,调用方等待接口返回结果后再继续执行 实时性要求高的业务查询、即时业务操作 HTTP/HTTPS、RESTful API、WebService、RPC 异步通知 事件驱动模式,调用方发送请求后无需等待结果,接口执行完成后通过回调通知结果 非实时的批量业务、长耗时操作、事件通知 消息队列(Kafka/RabbitMQ/MQTT)、WebHook 文件传输 批量数据同步模式,通过文件交换实现系统间数据共享 大批量离线数据同步、对账文件传输 FTP/SFTP、S3对象存储协议 同时需明确定义协议的版本号、请求方式、连接超时时间、重试规则、熔断降级机制,确保接口通信的稳定性。
报文结构与数据格式标准化定义 统一定义系统间交互的数据格式规范,确保交互双方的解析一致性:
- 基础编码:统一使用UTF-8字符编码,避免中文乱码;
- 数据载体:优先使用JSON格式,兼容XML、二进制流等格式,禁止使用自定义的非标准格式;
- 报文结构:严格定义请求报文与响应报文的标准化结构,分为报文头、业务数据段、状态码段三部分,明确定义每个字段的名称、数据类型、长度约束、必填/选填规则、取值范围。
标准化响应报文示例:
json{ "code": 200, "msg": "操作成功", "data": {}, "timestamp": 1744200000000 }身份鉴权与安全设计规范 外部接口是系统安全的核心边界,必须设计完整的安全机制,核心包括:
- 身份鉴权:定义接口访问的身份验证规则,常用方案包括接口密钥(AK/SK)、Token鉴权、数字签名、SSL/TLS加密传输;
- 权限控制:明确每个接口的访问权限,仅允许授权的系统/账号调用,禁止越权访问;
- 流量控制:定义接口的限流规则,避免外部系统的大量请求导致本系统崩溃;
- 数据安全:敏感数据必须加密传输与存储,禁止明文传输密码、身份证号、银行卡号等敏感信息。
异常处理与错误码体系设计 统一定义全接口的异常场景处理规则与标准化错误码体系,确保接口调用方能够根据错误码精准定位问题:
- 错误码分级:按照错误类型分为系统级错误码、业务级错误码,明确定义每个错误码的含义、触发场景、处理方案;
- 异常场景全覆盖:覆盖参数校验失败、身份鉴权失败、权限不足、业务处理失败、系统内部错误、网络超时、服务不可用等所有异常场景;
- 异常处理规则:接口必须捕获内部所有异常,通过标准化的错误码与错误信息对外反馈,禁止异常直接扩散导致系统崩溃;同时定义超时重试、熔断降级的处理规则,避免级联故障。
版本管理与兼容性设计 定义接口的版本迭代规则,每个接口必须带有版本号,接口功能发生变更时,需升级版本号,优先兼容旧版本接口的调用逻辑,提供过渡期,避免因接口变更导致关联系统的运行故障,符合结构化设计的稳定性要求。
三、常见设计误区
🔍 拓展查看常见误区
- 协议不规范:使用自定义的非标准通信协议,无统一的报文格式,导致对接成本极高;
- 无错误处理:接口异常时直接抛出堆栈信息,无标准化的错误码体系,调用方无法定位问题;
- 安全缺失:无身份鉴权、无加密传输、无流量控制,接口存在严重的安全漏洞;
- 强耦合设计:接口与内部业务逻辑深度绑定,内部业务修改直接导致接口变更,影响关联系统;
- 无版本管理:接口变更无版本号,无兼容性处理,直接导致关联系统调用失败;
- 无幂等性设计:接口重复调用会导致业务数据重复处理,出现数据不一致的问题。
🖥️ 3.3.3 模块之间的接口设计
结构化设计核心考点 低耦合设计核心模块之间的接口设计(简称内部接口设计),是结构化设计中最核心、最基础的内部设计环节。结构化设计通过自顶向下的分解,将完整的软件系统拆解为若干个独立模块,模块间接口正是定义这些模块之间数据传递、功能调用的交互契约,是实现模块间协同、保障系统低耦合的核心关键,直接决定了软件系统的可维护性、可测试性与可扩展性。
在结构化设计流程中,概要设计阶段完成模块的分解与模块间接口的整体定义,明确模块的职责、依赖关系与接口清单;详细设计阶段完成每个接口的输入参数、输出返回值、异常处理等细节规范。
一、设计定位与核心目标
核心设计目标:通过标准化的接口定义,实现模块间的信息隐藏,仅对外暴露实现业务协作必需的功能与数据,完全隐藏模块内部的实现逻辑、数据结构、算法细节,确保模块之间的耦合度最低,同时保障模块间协作的稳定性与可维护性,完全符合结构化设计高内聚、低耦合的核心要求。
模块接口设计的核心价值:一个模块的内部实现逻辑修改,只要不改变接口契约,就不会对调用它的其他模块产生任何影响,从根本上降低软件系统的维护成本。
二、核心设计原则
⚠️ 设计重难点-必掌握
信息隐藏原则 核心原则 模块仅对外暴露实现业务协作必需的接口,模块内部的实现逻辑、数据结构、算法细节、私有变量全部对外隐藏。外部模块仅能通过模块公开的接口与模块交互,绝对无法访问模块内部的任何资源,是结构化设计的核心思想。
最小暴露原则 接口的功能范围、参数传递、数据返回均遵循最小化设计,仅提供完成当前协作必需的能力与数据,禁止暴露与当前业务无关的功能、参数与数据,从源头降低模块间的耦合度。
接口一致性原则 同一个模块内的所有接口,命名规则、参数传递顺序、返回值格式、错误处理方式必须保持统一;全系统的接口设计必须遵循统一的编码规范,降低模块间的协作成本与理解成本。
单向调用原则 结构化设计核心规范 严格遵循结构化设计的线性调用逻辑,模块间必须采用单向依赖、单向调用的设计,上层模块调用下层模块的接口,禁止下层模块反向调用上层模块的接口,绝对禁止模块间的循环调用与双向强依赖,避免系统出现逻辑混乱与维护灾难。
高内聚低耦合原则 接口设计必须保障模块内部功能高度内聚,每个模块仅负责一个单一的业务功能,每个接口仅负责一个单一的操作;模块间仅通过接口实现松耦合交互,优先使用数据耦合、标记耦合,严格禁止内容耦合、公共耦合。
无状态原则 接口设计尽量保持无状态,接口的执行结果仅依赖输入参数,不依赖模块内部的全局状态,避免因状态共享导致模块间的隐性耦合,提升模块的可测试性与可维护性。
三、完整设计流程与核心内容
按照结构化设计自顶向下、逐步求精的思路,模块间接口设计分为6个标准化步骤,逻辑递进如下:
模块职责与边界定义 基于自顶向下的模块化分解,明确每个模块的单一职责、业务边界,确保每个模块仅负责一个独立的业务领域,模块之间的业务边界清晰,无功能交叉、职责重叠,为接口设计奠定基础。
模块依赖与调用关系梳理 基于业务流程,梳理模块之间的依赖关系与调用顺序,绘制模块调用关系图,严格遵循单向调用原则,构建树形的模块调用层级,禁止循环依赖、反向依赖,明确模块间的接口交互场景。
接口清单与职责定义 基于模块间的交互场景,定义每个模块对外暴露的接口清单,明确每个接口的唯一功能、业务职责,确保每个接口仅负责一个单一的操作,符合高内聚原则;同时明确每个接口的调用权限,仅允许授权的模块调用,避免接口滥用。
接口输入输出与参数约定 严格定义每个接口的输入参数与输出返回值,是接口设计的核心细节:
- 输入参数:明确定义参数的个数、顺序、数据类型、取值范围、必填/选填规则、参数校验规则,明确每个参数的业务含义,禁止定义与接口功能无关的输入参数;
- 输出返回值:统一定义接口的返回值格式,包括正常业务处理的返回数据结构、数据类型与业务含义,以及处理结果的状态标识;结构化设计中,强烈推荐通过返回值统一传递接口执行状态,绝对禁止通过全局变量传递执行结果。
异常处理与错误传递规则设计 明确定义接口执行过程中所有异常场景的处理逻辑,包括参数非法、权限不足、业务处理失败、内部执行错误等场景的错误码定义、错误信息传递规则;核心要求:接口必须捕获内部所有异常,通过标准化的错误码对外反馈,禁止异常直接向上扩散导致系统崩溃,禁止在接口内部直接弹窗、打印日志等与接口功能无关的操作。
接口评审与版本管理 基于结构化设计的核心原则,对模块间接口设计进行评审,验证接口是否符合高内聚低耦合、信息隐藏、单向调用等核心原则;同时定义接口的版本迭代规则,当接口功能发生变更时,需通过版本号进行区分,优先兼容旧版本接口的调用逻辑,避免因接口变更导致关联模块的运行故障。
四、常见设计误区
🔍 拓展查看常见误区
- 循环依赖:模块A调用模块B的接口,模块B又反向调用模块A的接口,形成循环依赖,导致系统无法编译、维护难度极大;
- 接口暴露过多:模块对外暴露了大量内部实现相关的接口,违背信息隐藏原则,模块内部修改直接影响调用方;
- 全局变量滥用:多个模块通过全局变量传递数据,形成公共耦合,模块间隐性依赖过多,出现问题无法定位;
- 接口职责不单一:一个接口实现了多个不相关的业务功能,违背高内聚原则,接口复杂度极高,无法维护;
- 控制标志泛滥:通过大量的控制标志控制接口的执行逻辑,形成控制耦合,模块间逻辑绑定过深;
- 无异常处理:接口内部异常直接向上抛出,导致系统级崩溃,无标准化的错误码体系,问题无法定位;
- 反向调用:下层基础模块反向调用上层业务模块的接口,违背单向调用原则,模块层级完全混乱。
📚 3.3.4 接口设计实例(图书借阅系统)
知识点落地实操 结构化设计完整落地本实例以图书借阅系统为载体,完整落地上述三类接口设计的核心要求,100%贴合结构化设计自顶向下、模块化分解、高内聚低耦合的核心设计思路。
一、系统整体结构化分解与接口总览
1. 系统核心业务范围
用户身份认证、图书信息管理、读者信息管理、图书借阅/归还业务处理、逾期罚款处理、信息查询统计、系统基础配置管理。
2. 系统模块化分解
3. 系统接口整体设计原则
- 严格遵循单向调用原则:上层模块调用下层模块接口,无反向依赖、无循环调用;
- 严格遵循信息隐藏原则:每个模块仅对外暴露必需的接口,隐藏内部实现细节;
- 严格遵循高内聚低耦合原则:每个模块职责单一,模块间优先使用数据耦合、标记耦合;
- 全系统接口遵循统一的命名规范、参数规则、返回值格式、错误码体系。
二、软件与人之间的交互界面设计落地
本系统面向两类核心用户:普通读者、系统管理员,严格遵循一致性、最小负担、容错防错的设计原则,完整落地人机交互接口设计。
1. 分层信息架构设计
按照自顶向下的结构化思路,构建树形信息架构,功能分级收纳,路径唯一:
2. 核心业务交互流程设计
将核心业务拆解为线性的、分步的操作闭环,符合结构化逐步求精的设计思路:
- 图书借阅操作流程:用户登录系统→进入图书查询页面→检索目标图书→查看图书可借状态→点击借阅按钮→系统前置校验读者借阅权限、可借数量→校验通过,生成借阅记录→更新图书可借状态→借阅成功,提示用户并打印借阅凭证。
- 图书归还操作流程:管理员登录系统→进入借阅业务处理→图书归还页面→扫描图书条码→系统自动匹配借阅记录→校验图书是否逾期→若逾期,计算并结清逾期罚款→确认归还→更新图书馆藏状态→生成归还记录→归还成功,提示用户。
3. 界面与反馈体系标准化设计
- 全系统采用统一的三栏布局:顶部导航区、左侧菜单区、右侧内容操作区,所有页面布局完全一致;
- 全系统统一的反馈体系:操作成功使用绿色弹窗提示,加载状态使用进度条展示,警告使用黄色弹窗提示,错误使用红色弹窗提示,所有提示信息无技术术语,清晰易懂;
- 关键操作(如图书删除、读者注销、罚款减免)设置二次确认机制,避免管理员误操作;
- 所有输入框设置前置格式校验,禁止用户输入非法内容,提前拦截错误操作。
三、软件与硬件及其他软件系统之间的接口设计落地
1. 软件与硬件的接口设计
所有硬件接口均封装为标准化的函数,向上层业务模块屏蔽硬件底层差异,核心硬件接口如下:
| 硬件设备 | 通信协议 | 封装接口名称 | 核心功能 |
|---|---|---|---|
| 条码扫描枪 | USB-HID | BarcodeScaner.scan() | 监听扫描枪输入,解析并返回条码数据,封装扫码成功/失败的反馈逻辑 |
| 热敏打印机 | RS232串口 | Printer.printReceipt() | 定义打印指令集,实现借阅凭证、归还凭证、逾期通知单的标准化打印 |
| 门禁控制器 | TCP/IP | AccessControl.openDoor() | 发送身份核验请求,核验通过后发送开门指令,处理设备异常与告警 |
2. 软件与其他软件系统的接口设计
所有外部系统接口均遵循RESTful API规范,HTTPS加密传输,采用Token+数字签名鉴权,定义标准化的请求响应格式与错误码体系,核心接口如下:
| 对接系统 | 接口名称 | 请求方式 | 核心功能 | 前置条件 | 后置条件 |
|---|---|---|---|---|---|
| 校园一卡通系统 | /api/card/reader/sync | POST | 同步读者身份信息与一卡通账号 | 调用方身份鉴权通过,读者学号合法 | 返回读者同步结果,确保本系统与一卡通系统读者信息一致 |
| 校园一卡通系统 | /api/card/balance/query | GET | 查询读者一卡通账户余额 | 读者学号合法,鉴权通过 | 返回读者账户实时余额 |
| 校园一卡通系统 | /api/card/fee/deduct | POST | 扣除读者逾期罚款 | 读者余额充足,罚款金额合法 | 返回扣费结果,同步生成交易记录,确保资金一致性 |
| 馆藏书目中心系统 | /api/book/metadata/sync | GET | 批量同步图书元数据 | 鉴权通过,ISBN列表合法 | 返回图书标准元数据,更新本系统图书信息 |
| 数据库系统 | JDBC标准接口 | BaseMapper.xxx() | 封装数据库增删改查操作,事务管理 | 数据库连接正常,SQL语句合法 | 返回数据库执行结果,确保数据操作的原子性 |
四、模块之间的接口设计落地
按照结构化设计的模块分解结果,严格遵循单向调用、信息隐藏、最小暴露原则,完成核心模块的接口设计,以下为核心模块的接口定义示例:
1. 用户认证模块 对外核心接口
- 模块职责:负责用户身份合法性校验、用户会话管理、权限校验,模块内聚类型为功能内聚
- 调用约束:仅允许系统入口模块、权限校验模块调用,禁止业务模块反向调用
- 核心接口定义:
/**
* 用户身份认证接口
* @param userNo 用户编号/学号 字符串 必填
* @param passwordHash 密码哈希值 字符串 必填
* @param userRole 用户角色 枚举 必填:READER(读者)/ADMIN(管理员)
* @return AuthResult 认证结果结构体
* 包含:success(认证结果布尔值)、sessionId(会话ID)、userInfo(用户信息结构体)、errorCode(错误编码)
* 错误编码定义:0=成功,1=用户不存在,2=密码错误,3=角色不匹配,4=账号已冻结,5=参数非法
*/
public AuthResult userAuth(String userNo, String passwordHash, UserRole userRole);
/**
* 会话有效性校验接口
* @param sessionId 会话ID 字符串 必填
* @return boolean 会话是否有效
*/
public boolean checkSessionValid(String sessionId);
/**
* 用户权限校验接口
* @param sessionId 会话ID 字符串 必填
* @param permission 所需权限 字符串 必填
* @return boolean 是否拥有该权限
*/
public boolean checkPermission(String sessionId, String permission);2. 图书管理模块 对外核心接口
- 模块职责:负责图书信息查询、图书馆藏状态更新、图书基础信息维护
- 调用约束:仅允许借阅业务模块、系统管理模块单向调用,禁止反向依赖
- 核心接口定义:
/**
* 图书信息查询接口
* @param isbn 图书ISBN 字符串 必填
* @return BookInfo 图书完整信息结构体
* 包含:图书基础信息、馆藏数量、可借数量、馆藏位置、状态
*/
public BookInfo queryBookByIsbn(String isbn);
/**
* 图书馆藏状态更新接口
* @param isbn 图书ISBN 字符串 必填
* @param operateType 操作类型 枚举 必填:BORROW(借阅)/RETURN(归还)/INBOUND(入库)/OUTBOUND(出库)
* @param sessionId 操作人会话ID 字符串 必填
* @param count 操作数量 整型 必填
* @return OperateResult 操作结果结构体
* 包含:success(操作结果布尔值)、bookInfo(更新后的图书信息)、errorCode(错误编码)
* 业务约束:仅当会话ID校验通过后可执行写操作;可借数量小于0时禁止执行更新
*/
public OperateResult updateBookStatus(String isbn, OperateType operateType, String sessionId, int count);3. 借阅业务模块 接口调用规则
- 借阅业务模块为系统核心业务模块,严格遵循结构化单向调用原则,单向依赖并调用用户认证模块、图书管理模块、读者管理模块的对外接口,无任何反向调用;
- 模块内部实现借阅、归还、逾期处理的核心业务逻辑,仅对外暴露标准化的业务操作接口,完全隐藏内部业务规则的实现细节,确保模块的高内聚与低耦合;
- 模块间核心业务调用时序图如下:
实例设计核心总结
💡 知识点落地总结
本图书借阅系统的接口设计,100%遵循结构化设计的核心思想,完整落地了三类接口的设计规范:
- 通过自顶向下的分层设计,明确了人机交互接口、系统外部接口、模块内部接口的边界与契约,构建了清晰的系统架构;
- 通过信息隐藏与最小暴露原则,实现了模块的高内聚与低耦合,每个模块职责单一,仅对外暴露必需的接口;
- 通过单向调用原则,构建了树形的模块调用层级,无反向依赖、无循环调用,系统逻辑清晰,可维护性极强;
- 通过标准化的接口契约定义,实现了系统与外部环境的解耦,保障了系统的可扩展性与兼容性。