应用开发,功能设计要从需求出发

news/2026/1/22 17:10:41/文章来源:https://www.cnblogs.com/LeapCarp/p/19518234

应用开发,功能设计要从需求出发

​ ——记录一次开发前的框架规划

在一个风和日丽的下午,我如往常一样睡觉摆烂,突然!一个神秘人闯入我的梦境,给了我一个任务,需要我做一个关于违规内容检测的项目。还没等我开口,神秘人来也匆匆去也匆匆,只留下一个项目名称……

正常人不会把这个荒诞的梦境当一回事,但是我不正常。

我开始着手分析这个项目:
服务对象是谁?
什么群体会有这个需求?
需求量大不大?
系统最终会被放在什么环境里运行?

正在我一筹莫展之际,天空突然飘来了五个字——
“先做校园网~”

受到神明指引的我,瞬间豁然开朗。

校园网是一个非常典型、也非常“矛盾”的网络环境:
一方面,它承载着教学、科研、管理等严肃业务;
另一方面,它的用户群体复杂,网站数量庞大,历史包袱极重。

如果能在这个场景下,把“违规内容检测”这件事做清楚、做稳定,那么放到更复杂的互联网环境里,只会更游刃有余。

于是,项目的第一个锚点被钉死了:

这是一个面向多学校、以校园网为扫描对象的违规内容检测系统。


一、先不写代码,先想“人”

在真正动手之前,我强迫自己做了一件“反直觉”的事情——
不写代码,不画架构图,只想“谁在用”。

如果这个系统真的被用起来,那么它里面至少会出现几类人:

  • 有人负责整个系统的运维与合规

  • 有人代表某一所学校

  • 有人只负责点按钮、跑任务

  • 还有人只关心:

    “你们系统是不是乱扫?有没有越权?有没有审计?”

于是,一个非常清晰的结论出现了:

这是一个天然的多租户系统,而且权限一定不能乱。

也正是从这里开始,RBAC(基于角色的权限控制)不再是“加分项”,而是“生死线”。


二、需求倒推功能,而不是功能堆需求

我给自己立了一个规矩:

任何一个功能,都必须能在需求里找到它的“来源”。

为什么要注册、登录、授权?

因为这是一个面向学校的系统,不是给个人随便用的工具。
所以我很早就否定了“开放注册”这种方案,而是选择了:

  • 注册码注册
  • 租户级别激活
  • 登录即视为授权确认

这不是技术问题,是合规问题


为什么要区分这么多角色?

不是我想复杂,而是现实本来就复杂。

如果把“学校”当成一个整体,会非常危险:

  • 谁能创建扫描任务?
  • 谁能删除扫描结果?
  • 谁能看到历史记录?
  • 谁来背锅?

所以最终,我把角色拆得非常明确:

  • 系统管理员:只存在于平台层
  • 学校管理员:对学校负责
  • 操作员:只能“干活”
  • 审计员:只看、不动

这样做的目的只有一个:

任何越权行为,在设计阶段就被堵死。


三、扫描不是点一下按钮那么简单

当功能走到“扫描任务”这一步时,我意识到一个问题:

扫描本身,就是一个高风险操作。

尤其是在校园网这种环境里:

  • 扫太快,可能影响业务
  • 扫太广,可能越权
  • 扫内网,还涉及账号、代理、登录态

所以我给“扫描任务”加了很多的限制:

  • 二次确认
  • 资产范围快照
  • 任务状态机
  • 可取消、可暂停
  • 全流程审计

表面看起来复杂,实际上是在给系统兜底。


四、任务调度的本质,是隔离与可控

当我开始设计任务调度时,我给自己提了一个问题:

如果 A 学校的任务把 Worker 跑死了,会不会影响 B 学校?

如果答案是“会”,那这个系统就不配上线。

于是我明确了几条原则:

  • 任务必须入队
  • Worker 必须无状态
  • 进度高频走 Redis,DB 只做关键节点
  • 取消是“请求式”的,不是“强杀”

这也是为什么任务状态、进度、心跳要拆开存储。

不是为了“优雅”,是为了活着


五、从目录结构开始,约束未来的混乱

在真正敲第一行代码之前,我先写下了整个项目的目录结构。

不是为了好看,而是为了回答一个问题:

半年后我回来看,这个项目还能不能看懂?

前端按业务拆、后端按职责拆、Worker 专心干活。
每一层都知道自己能做什么,不能做什么

当目录结构一旦定下来,其实很多错误已经被提前避免了。


写在最后

到这里,代码还没写一行,但项目已经“活”了一半。

回头看这次规划,我越来越确信一件事:

好的系统,不是写出来的,是想清楚之后“被允许”写出来的。

如果你正在做一个偏工程、偏合规、偏长期维护的项目,
那请一定记住这一句话:

功能设计,一定要从需求出发,而不是从技术出发。

而真正的编码工作,反而成了整个过程里,最轻松的一步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1201051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实用指南:ES6冷门API

实用指南:ES6冷门APIpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

基于igh开源协议栈和xenomai3实时Linux系统的运动控制器

运动控制器源码 igh ethercat xenomai3 rtdm i210 i211 基于igh开源协议栈和xenomai3实时linux系统的运动控制器 技术优势: 1、支持intel or amd 常规处理器 2、基于ethetcat 1.5.2官方稳定版适配rtdm驱动接口 3、基于ethercat 1.5.2官方稳定版适配当前工控机主流配…

2026年全国工厂搬迁哪家靠谱?多个厂家核心参考 各类需求全面解析

当前工厂搬迁市场正随着制造业升级呈现精细化需求,尤其是高端制造、精密设备领域,搬迁服务的安全性、专业性直接决定企业停工损失与资产保全效果。有数据显示,非专业搬迁导致的设备损坏、停工延误等隐性成本,平均可…

基于MATLAB实现车联网(V2X)资源分配

基于MATLAB实现车联网(V2X)资源分配,涵盖用户、路边单元(RSU)和基站的三维资源协同优化:一、系统架构设计 %% 系统参数初始化 num_users = 50; % 用户数(车辆) num_RSU = 5; % 路边单元数量 num_BS =…

一站式整体供应方案:博奥森如何为高校、科研院所及药企提供高性价比AD7c-NTP、Ki-67抗体解决方案

在生物试剂采购日益复杂化的今天,单纯的产品销售已无法满足科研用户的需求。北京博奥森生物技术有限公司凭借丰富的产品线、强大的定制服务能力及高效的供应链管理,为高校、研究院所及药企用户提供“一站式”整体供应…

k8s中pod的场景状态以及故障状态

1,什么是pod pod其实是一组容器,pod是k8s中最小的调度和管理单元,封装一个或多个容器,共享网络和存储资源,运行在同一个执行环境中。 pod的英文含义是豌豆荚。pod和容器的关系就就是豌豆荚和豌豆的关系,一个pod可…

深度测评8个AI论文写作软件,专科生毕业论文轻松搞定!

深度测评8个AI论文写作软件,专科生毕业论文轻松搞定! AI 工具如何助力论文写作?专科生也能轻松应对 在当今快节奏的学习环境中,专科生面对毕业论文的压力日益增大。传统的写作方式不仅耗时费力,还常常面临内容重复、结…

移动端办公场景:企业网盘实测移动体验分析

本文将重点评测以下9款产品在移动端的表现:够快云库、Microsoft OneDrive for Business、Dropbox Business、坚果云、联想企业网盘(联想Filez)、360亿方云、钉钉钉盘、腾讯企业云盘、百度企业网盘。在数字化浪潮席卷…

【CDA干货】6个超好用的网站,全流程解决数据分析难题

一、找数据:镝数聚聚合了全球8000多家权威数据源,内容涵盖了社会、互联网与通信、经济与商业、生活娱乐、消费市场、金融、媒介与广告、健康与制药、工业、能源与环境、运输与物流、农业等16大领域、120多个垂直行业。镝数图表拥有上百种图表模板&#x…

论文阅读汇总

大语言模型类 AbsoluteZero VLA π0.5 Igniting VLMs toward the Embodied Space DSRL RoboReward 数据采集 MOVE

【论文阅读】AbsoluteZero: ReinforcedSelf-play Reasoningwith Zero Data

【论文阅读】AbsoluteZero: ReinforcedSelf-play Reasoningwith Zero Data 1 发表时间与团队2 问题背景与核心思路3 具体设计3.1 模型设计3.2 self play设计 4. 实验5 结论6 有趣的发现 1 发表时间与团队 发表时间:2025年10月(arXiv v3 版本日期为2025年…

Taro多端研发:2025年AI原生时代的“一次编写,处处智能“终极指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

桥梁墙面混凝土裂缝风化识别分割数据集labelme格式7752张2类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件)图片数量(jpg文件个数):7752标注数量(json文件个数):7752标注类别数:2标注类别名称:["efflorescence","crack"]每个类别…

对声音数字化的一些问题

一、声音转模拟的电信号 一般是麦克风和三极管放大电路组成。 麦克风一般是线圈感应类型或者电容类型。 二、模拟电信号转数字信号 需要模拟转数字信号。 需要一些电压比较器,当模拟电压达到某个电压,就导通输出数字电平。 三、过滤噪音的思路 1、声音数…

2026英语雅思培训学校机构辅导机构怎么选?深度解析行业模式+优质机构口碑榜单与家长择校指南

对于计划让孩子备考雅思、冲刺海外院校的家长来说,挑选合适的英语雅思培训学校机构辅导机构始终充满困惑。不知道如何判断机构的课程是否适配孩子的雅思基础与留学目标,担心师资不专业、教学体系不完善,又怕选错机构…

2026英语雅思学习辅导机构怎么选?深度解析行业现状+优质机构口碑榜单与家长择校指南

对于计划让孩子备考雅思、冲刺海外院校的家长来说,挑选合适的英语雅思学习辅导机构始终充满困惑。不知道如何判断机构的课程是否适配孩子的雅思基础与留学目标,担心师资不专业、教学体系不完善,又怕选错机构浪费时间…

hal!HalGetBusDataByOffset函数分析得到Device (P2P0)PCI设备空间前4个字节

hal!HalGetBusDataByOffset函数分析得到Device (P2P0)PCI设备空间前4个字节 1: kd> g Breakpoint 51 hit eax00000000 ebx899050a0 ecx00000100 edx8996d118 esi00000000 edi00000000 eip804f25ee espf791abdc ebpf791ac48 iopl0 nv up ei pl zr na pe nc cs0008 s…

1688供应商API:评价系统集成与供应商筛选实战指南

在电商供应链管理中,供应商评价体系的自动化集成与高效筛选能力直接影响采购决策效率。本文将基于1688开放平台API,详细解析评价系统对接与供应商筛选的技术实现路径,并提供可直接落地的代码方案。 一、评价数据获取与解析 通过alibaba.prod…

AI 应用的开发方法

AI 应用的开发方法已经从单纯的“调用 API”转变为以智能体(Agentic Workflow)和规格驱动开发(Spec-driven Development)为核心的系统化工程。现在的开发范式强调:AI 不再是应用的一个功能,而是应用的底层逻…

【爆肝】2026年AI技术栈:RAG+微调+长上下文,通往AGI的黄金组合!小白程序员必学!

01. 引言:大模型的“阿喀琉斯之踵”依然存在 时间来到 2026 年,大模型技术已经迈入了一个全新的阶段。ChatGPT-5.2的推理能力相比 GPT-4 有了显著提升 [^1],Gemini 3 在长文本记忆上也有了质的飞跃。然而,一个尴尬的现实依然困扰…