Day03-系统设计总览
0、开篇系统设计到底设计了什么上一节我们提到了需求工程它回答了要做什么本篇我们聊一聊系统设计系统设计回答的其实是怎么把它做出来。很多同学一听到系统设计四个字脑子里蹦出的第一个画面就是 UML 类图、数据库表结构。没错这些确实属于系统设计但它们也只是冰山一角。那么系统都包括哪些呢1、系统设计的九大类别完整的系统设计方案一般是由以下九个部分构成的设计类别核心内容它在解决什么问题网络设计选择网络结构安排设备分布、布线部署划定节点权限系统跑在什么样的物理底座上代码设计包括面向对象设计和结构化设计实现代码的唯一化、规范化、系统化代码怎么写才规范、可维护输入设计确保输入数据的完整性、正确性、一致性怎么堵住不合规数据源头输出设计确保输出数据的完整性、正确性、一致性系统产出的结果怎么呈现处理流程设计确定各系统模块的内部结构——局部数据组织、控制流、加工过程与细节数据进来之后经过怎样的流水线才变成结果数据存储设计选择存储方式、介质、组织方式估算容量数据存在哪里、怎么存数据库设计概念设计 → 逻辑设计 → 物理设计结构化数据怎么建模和落地用户界面设计优化交互体验黄金三原则置于用户控制之下、减轻记忆负担、保持界面一致用户怎么和系统对话安全性和可靠性设计确保系统安全有效运行对运行环境和数据处理进行控制系统会不会崩会不会被攻击本篇我们聚焦其中最关键、也是选择题考查最多的三块处理流程设计、输入输出设计、用户界面设计。其余部分将在后续篇幅展开。好既然要深入我们先问第一个问题。2什么是流程——六个要素一个都不能少处理流程设计是所有系统设计的骨架。没有流程代码只是一堆散落的砖块不知道往哪搬呐。那到底什么是流程流程是一组将输入转化为输出的相互关联或相互作用的活动。一句简单的话但拆开来看它包含了6 个基本要素分别是输入资源、活动、活动的相互作用结构、输出结果、用户和价值。用一个常见的例子——电商平台的退货退款流程——来把这六个要素具象化要素名称要素含义退货退款场景中的体现输入资源触发流程的初始材料用户提交的退货申请含订单号、退货商品信息、原因、凭证图片活动流程中的具体操作步骤退货申请审核 → 商品状态校验 → 库存更新 → 退款金额计算 → 执行原路退款 → 通知财务/物流活动的相互作用流程之间的依赖与协作与订单状态管理库存系统财务对账用户信用评分等流程的交互输出结果流程产生的最终交付物退款到账通知App/短信、退货进度状态更新、退货完成确认邮件用户流程的服务对象已购买商品且符合退货政策如7天无理由、质量问题的注册用户价值流程存在的根本意义保障用户售后权益提升购物信任度完成逆向物流闭环你会发现六个要素中真正看得见的只有活动那几个步骤。但决定一个流程好不好的恰恰是那些看不见的要素——输入对不对、用户是谁、最终创造什么价值。这就引出了下一个问题有了流程的定义用什么工具把它画出来、让所有人都能看懂3流程设计工具三剑客 —— 图形、表格、语言处理流程设计需要精确表达过程规则。业界积累了三类工具图形工具、表格工具、语言工具。三类工具各有适用场景挨个看一下。3.1 第一剑图形工具 — 让流程可视化图形工具一共五种可以按表达能力的演进顺序来理解① 程序流程图PFD — 最原始的通行语言PFD 用图框表示各种操作独立于任何程序设计语言是每个程序员入门的第一张图。优点直观、易上手。问题符号不规范箭头可以随意乱飞导致控制流跳来跳去——这正是结构化编程要解决的问题。② N-S图盒图 — 强制结构化不许乱飞N-S 图就解决了PFD随意转移控制的问题。它用方框代替传统的流向线包含五种标准控制结构顺序型、选择型、WHILE 循环型、UNTIL 循环型、多分支选择型。核心思想一句话把箭头锁死只能按结构化规则流转。③ IPO图 — 从模块视角看流程IPO 图描述模块的输入Input→ 处理Process→ 输出Output结构清晰常用于系统设计文档。和 N-S 图的区别在于N-S 图关注的是这个模块内部的控制逻辑怎样IPO 图关注的是这个模块对外的接口长什么样。④ 问题分析图PADPAD 由日立公司提出支持结构化程序设计包含五种基本控制结构执行顺序明确特别适合嵌套和层次关系的表示。什么时候选 PAD 而不是 N-S 图当你的逻辑有很深的嵌套if 里套 if 里套 whilePAD 的树形展开比 N-S 图的层层缩进更直观。⑤ 判定树当业务规则复杂到if A 且 B 则 Xif A 且 非B 则 Yif 非A 则 Z。判定树用树形结构来表达这种多级条件判断条件和处理流程一目了然。3.2 第二剑表格工具 — 判定表判定树适合读但如果条件之间有多重组合关系——比如 3 个条件各 2 种取值的 2³8 种组合——判定树的枝叶就会极其茂密。这种场景下判定表是更好的选择用表格形式呈现条件和行动结构清晰、简明扼要不会漏掉任何一种条件组合。3.3 第三剑语言工具 — 过程设计语言PDL / 伪代码当你需要表达非常精细的处理逻辑——比如一个排序算法的实现细节——图形工具就不够用了。PDL伪代码混合了自然语言的表达力和结构化程序设计语言的语法灵活且支持逐步求精是详细设计阶段的主力工具。3.4 速查表分类工具名称总结图形工具程序流程图 PFD最通用的流程图但箭头可乱飞图形工具N-S 图盒图强制结构化消除乱跳图形工具IPO 图从 I→P→O 视角看模块图形工具问题分析图 PAD适合嵌套和层次关系图形工具判定树树形表达复杂条件判断表格工具判定表多条件多组合不遗漏语言工具过程设计语言 PDL伪代码灵活且可逐步求精讲到这里我们应该已经掌握了设计单个流程的工具箱。但一个真实系统往往有几十上百个流程——谁来管理这些流程之间的协调4、当流程变多——工作流管理系统WFMS工作流管理系统WFMS就是为了解决流程多、流程乱而生的。它的定义WFMS 通过软件定义、创建工作流并管理其执行。它运行在一个或多个工作流引擎上这些引擎解释过程定义、与工作流参与者相互作用并根据需要调用其他 IT 工具或应用。三个核心功能工作流建模→ 定义活动和规则把现实业务过程映射为可执行的模型。工作流执行→ 创建和运行实际的工作流实例。业务过程管理与分析→ 监控、管理、优化执行中的业务流程。举个栗子如果流程设计工具是画图纸的那么 WFMS 就是拿着图纸去建造和运营整条生产线的。5、数据怎么进、怎么出输入输出设计流程设计解决了数据怎么被加工现在要解决的是数据从哪进来、加工完送到哪去。5.1 输入设计控制数据入口输入是系统与外部世界交互的第一道防线。输入设计遵循7 大原则原则核心关注点确定输入数据的类型和格式文本/数字/图像整数/浮点/JPEG确定输入数据的来源用户手工输入传感器采集外部系统推送设计良好的输入界面布局、控件选择、输入提示、错误提示设计系统输入验证机制验证规则、错误提示、安全性校验设计输入处理流程数据清洗、格式转换、去重去噪设计输入存储方案存储方式、存储结构、存储安全设计输入安全机制访问控制、数据加密、防 SQL 注入这 7 条原则构成了一条防线从识别输入到验证输入到处理输入到安全存储输入。5.2 输出设计让结果可读、可用、可靠输出设计的逻辑更简洁共三步第一步确定输出内容用户要什么。第二步选择输出设备与介质显示终端打印机PDFAPI。第三步确定输出格式报表图形JSON。同时输出设计也有7 项原则可以直接对照输入原则来理解原则名称核心要求简洁性原则避免冗余信息与复杂设计风格简洁明了一致性原则保持设计风格与交互方式一致可用性原则关注用户体验让系统便捷、易用、可靠可访问性原则考虑不同用户的需求与能力可维护性原则易于系统维护与升级安全性原则重视系统安全性与保密性可扩展性原则灵活适应不同需求的扩展6、人与系统的对话——人机交互设计有个最直观的问题用户怎么用这个系统人机交互设计的终极目标就三条切实满足用户需求— 功能有用、内容齐全对用户有帮助产品易上手使用— 操作、理解、学习难度低降低错误率与学习成本— 让用户轻松掌握系统设计良好人机交互有十个方法要点步骤/要点具体内容1. 了解用户用户群体划分、需求调研、使用场景分析、竞品分析2. 设计交互界面采用简单、自然、统一的操作方式降低学习与操作成本3. 即时反馈机制用户操作后系统需及时反馈增强交互感与确定性4. 辅助功能为视、听、肢体障碍用户提供适配功能保障无障碍使用5. 用户测试通过实际用户使用验证发现交互设计问题6. 迭代优化基于测试结果持续改进逐步提升体验7. 多语言支持覆盖不同语言用户拓展使用范围8. 结合实际场景让交互设计贴合真实使用环境提升实用性9. 适度动画效果合理动画增强交互趣味性与引导性不过度冗余10. 引入新理念技术应用创新理念如极简交互和新技术如手势/语音交互

相关新闻

基于ROS 2与Meta Quest 3的松灵机械臂VR遥操作实践指南

基于ROS 2与Meta Quest 3的松灵机械臂VR遥操作实践指南

这次我们来看一个将虚拟现实(VR)与机器人控制深度结合的开源项目:松灵七轴机械臂 Nero 的双臂遥操作。这个项目的核心亮点在于,它利用 Meta Quest 3 头显作为控制器,通过 ROS 2 Jazzy 框架,实现了对实体七轴…

2026/8/8 8:32:28 阅读更多 →
AI智能体评测:从基准测试陷阱到可落地的工程评估框架

AI智能体评测:从基准测试陷阱到可落地的工程评估框架

如果你是一名AI开发者或技术决策者,最近可能被一个矛盾困扰:一方面,大模型和智能体(Agent)的能力日新月异,宣称能解决各种复杂任务;另一方面,当你真正想把它们引入项目时&#xff0c…

2026/8/8 8:32:28 阅读更多 →
Godot全局音乐管理器:基于自动加载与单例模式的音频系统设计

Godot全局音乐管理器:基于自动加载与单例模式的音频系统设计

1. 项目概述:为什么我们需要一个全局的Music管理器?在Godot里做游戏,尤其是稍微有点规模的,你肯定遇到过这个头疼的问题:音乐怎么管?场景A里放了一首战斗BGM,切换到场景B,音乐要么戛…

2026/8/8 8:32:28 阅读更多 →

最新新闻

终极FF14钓鱼辅助工具:渔人的直感完整指南,告别错过咬钩的烦恼

终极FF14钓鱼辅助工具:渔人的直感完整指南,告别错过咬钩的烦恼

终极FF14钓鱼辅助工具:渔人的直感完整指南,告别错过咬钩的烦恼 【免费下载链接】Fishers-Intuition 渔人的直感,最终幻想14钓鱼计时器 项目地址: https://gitcode.com/gh_mirrors/fi/Fishers-Intuition 还在为FF14钓鱼时总是错过最佳时…

2026/8/8 17:52:26 阅读更多 →
实测无踩坑 Hermes Windows 分步搭建,解压即启动全流程拆解

实测无踩坑 Hermes Windows 分步搭建,解压即启动全流程拆解

🔍前言 对于希望体验 Hermes Agent 强大办公能力的 AI 工具用户而言,复杂繁琐的环境配置往往构成了较高的上手门槛。从手动安装依赖、调整系统路径,到处理命令行报错、修复权限异常、补全缺失的核心文件……这一系列技术难题,使得…

2026/8/8 17:52:26 阅读更多 →
数仓开发落地手册

数仓开发落地手册

数仓面试前必看!这5道题答不上来,基本没戏 写在前面最近辅导了好几个准备数仓面试的粉丝,发现一个扎心的现象,很多人简历上写着"精通数仓建模",真到面试时被追问两三个问题就露馅了。不是不够努力&#xff0…

2026/8/8 17:52:26 阅读更多 →
5分钟零代码搭建企业级设备维护系统:Strapi无头CMS终极方案

5分钟零代码搭建企业级设备维护系统:Strapi无头CMS终极方案

5分钟零代码搭建企业级设备维护系统:Strapi无头CMS终极方案 【免费下载链接】strapi 🚀 Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable, and developer-first. 项目地址: https://gitcode.c…

2026/8/8 17:51:26 阅读更多 →
Mistral 3 系列多模型路由:Spring Boot 后端按请求复杂度动态选型的踩坑实录

Mistral 3 系列多模型路由:Spring Boot 后端按请求复杂度动态选型的踩坑实录

Mistral 3 系列多模型路由:Spring Boot 后端按请求复杂度动态选型的踩坑实录项目背景我们团队在 2026 年 6 月对核心 NLP 服务做了模型升级,从原先单一接入 Mistral 7B 切换到了 Mistral 3 系列。业务场景是电商平台的商品问答与智能客服,日均…

2026/8/8 17:51:26 阅读更多 →
掌握LeakCanary:提升Android应用性能的内存泄漏检测方案

掌握LeakCanary:提升Android应用性能的内存泄漏检测方案

掌握LeakCanary:提升Android应用性能的内存泄漏检测方案 【免费下载链接】leakcanary A memory leak detection library for Android. 项目地址: https://gitcode.com/gh_mirrors/le/leakcanary 在Android应用开发中,内存泄漏是导致应用性能下降、…

2026/8/8 17:51:26 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/8 17:02:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/8 17:02:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/8 17:02:44 阅读更多 →