在软件开发或系统建设的过程中,我们常常听到这样的吐槽:
-
"系统功能很强大,但根本不是我们想要的!"
-
"花了大价钱做了个软件,结果医生不用、患者嫌麻烦。"
-
"需求改来改去,最后发现一开始方向就错了。"
这些问题的根源,往往在于开发团队过早关注"如何做系统"(解决方案),却忽略了"真正要解决什么问题"(问题本身)。
这时候,就需要一种更"接地气"的分析方法------面向问题域的需求分析(Problem Domain-Oriented Analysis,简称 PDOA) 。它的核心只有一句话:先搞清楚问题是什么,再考虑怎么解决。
下面,我们就用最通俗的语言,带你一步步理解 PDOA 到底是什么、为什么重要,以及它如何帮我们做出真正有用的系统。
一、PDOA 到底是什么?
简单来说,PDOA 是一种分析方法,它要求我们在动手做系统之前,先花时间深入理解用户面临的真实问题、业务场景和核心痛点,而不是直接跳到"系统要有哪些功能"的讨论。
举个生活中的例子:
假设你发现家里厨房总是乱糟糟的,你想买个"厨房整理系统"(比如收纳盒、置物架)。但如果没先搞清楚问题------是碗太多没地方放?还是调料瓶乱放找不到?或者是做饭流程不合理导致台面堆满东西?------那你买的工具可能根本用不上。
PDOA 就像是在买工具前,先蹲下来观察你做饭的流程、摸清楚哪些环节最让你头疼,再针对性地设计解决方案。
二、为什么需要 PDOA?
在传统开发中,很多人会直接问:"我要做个XX系统,帮我列个功能清单。" 但这样很容易陷入两个陷阱:
-
"自以为懂需求":开发团队凭经验猜测用户需要什么,结果做出来的功能不符合实际场景(比如给老年人设计的健康APP界面太复杂,老人不会用)。
-
"头痛医头脚痛医脚":只解决表面问题(比如患者复诊麻烦,就只做线上挂号),却忽略了深层原因(比如医生不了解患者历史数据,导致复诊效率低)。
而 PDOA 的作用,就是强迫我们在早期停下来,认真思考:"问题的本质是什么?谁遇到了问题?问题发生在什么场景?" 只有把这些问题想清楚,后续的功能设计、系统开发才不会跑偏。
三、PDOA 怎么做?------ 以"医院慢病管理软件"为例
为了更直观,我们用一个具体场景来说明:某医院想为慢病患者(如高血压、糖尿病患者)开发一套管理软件,帮助他们更好地控制病情。如果用 PDOA 方法,会怎么做?
第一步:明确"问题域"------我们关注的是什么?
"问题域"就是用户真实面对的业务场景和问题集合。在这个例子中,问题域是:"医院如何长期、有效地管理慢病患者,帮助他们控制病情、减少并发症,同时提升医生的管理效率?"
注意:这里关注的不是"做一个软件",而是"慢病管理"这个实际业务问题。
第二步:找到"真正的问题"------用户有哪些痛点?
通过和医生、护士、患者聊天,观察他们的日常流程,可能会发现这些问题:
-
医生视角:
-
患者每次复诊都要重新讲病史,医生看不到之前的血压、血糖记录,只能翻纸质病历,效率低;
-
患者几个月不来复查,等到病情恶化才来急诊,再入院率高;
-
不同科室的数据(比如心内科的高血压记录和内分泌科的糖尿病记录)分散,没法综合判断病情。
-
-
患者视角:
-
要记各种用药时间,经常忘记吃;
-
不知道自己的血压/血糖控制得怎么样,心里没底;
-
复诊要专门跑医院,排队时间长,懒得去。
-
-
医院管理者视角:
-
慢病患者管理效果难量化(比如多少人血压达标、多少人按时复诊);
-
缺乏统一的工具,医生各自记录,数据不规范。
-
👉 这些才是"真问题"------不是"系统功能少",而是"信息不连贯""患者依从性低""管理效率差"。
第三步:分析"谁和问题有关"------明确利益相关者
一个问题往往涉及多个角色,每个角色的关注点不同:
| 角色 | 关心的问题 |
|---|---|
| 慢病患者 | 方便记录用药、提醒复诊、了解自己的健康状况 |
| 医生/护士 | 快速查看患者历史数据、制定个性化管理计划、及时发现异常 |
| 医院管理者 | 整体管理效果(如控制率、再入院率)、数据合规性 |
| 技术团队 | 系统能不能跑得稳、数据安不安全(后面会细化) |
理解这些角色的需求,才能避免"只满足一方,得罪另一方"(比如系统太复杂,医生用不了;或者只考虑医生,患者觉得不好用)。
第四步:拆解问题------问题的核心在哪里?
通过进一步调研,会发现问题的根源往往集中在几点:
-
数据分散:患者的血压、血糖、用药记录散落在不同科室的纸质本子或系统里,医生看不到全貌;
-
缺乏连续性:患者出院后没人管,没人提醒复查或调整用药;
-
沟通断层:医生和患者之间只有复诊时见一面,平时没互动;
-
患者能力不足:老年人不会用手机记录,记不住用药时间。
👉 这些才是问题的"根",后续的系统设计就要围绕解决它们展开。
第五步:界定"问题的边界"------哪些要解决?哪些先不管?
PDOA 强调"聚焦核心",不能贪大求全。比如:
-
要解决的问题(核心):慢病患者的健康数据整合、医生随访管理、患者用药提醒、异常指标预警。
-
暂时不解决的问题(非核心):远程视频问诊(可以后期加)、医保自动结算(属于另一个系统)、所有科室数据打通(先做慢病相关科室)。
明确边界能避免"需求越做越多,项目永远做不完"。
四、PDOA 做完后,我们得到了什么?
经过这一系列分析,我们虽然没有直接写出"系统要有哪些功能",但已经搞清楚了:
-
问题的本质:慢病管理的核心难点是"信息不连贯、患者依从性低、管理效率差";
-
关键角色:医生、患者、管理者各自的需求和痛点;
-
核心场景:比如患者复诊前需要医生快速看历史数据,患者每天需要提醒吃药;
-
边界范围:先解决慢病相关科室的管理,暂不扩展到全院。
这些结论,就是后续明确功能需求(比如要做健康数据看板、用药提醒功能)、非功能需求(比如系统要稳定、数据要安全)的基础。
五、PDOA 和"普通需求分析"有什么区别?
很多人可能觉得:"这不就是需求分析吗?" 其实,PDOA 是需求分析的前置关键步骤,两者的区别可以简单理解为:
| 对比项 | PDOA(面向问题域分析) | 普通需求分析(后续阶段) |
|---|---|---|
| 关注点 | "问题是什么?""为什么会出现?" | "系统要做什么?""要做到什么程度?" |
| 输出 | 问题描述、用户痛点、业务场景、边界 | 功能清单、性能要求、用户故事 |
| 目标 | 避免"做错问题"(方向错误) | 避免"做错功能"(细节错误) |
| 类比 | 盖房子前,先搞清楚"住户真正需要什么户型" | 盖房子时,设计具体的房间布局和材料 |
简单说:PDOA 是"找对问题",需求分析是"解决对的问题"。
六、总结:PDOA 到底有什么用?
对于开发团队:它能帮你做出真正解决用户痛点、符合实际场景的系统,而不是"看起来高大上但没人用"的工具;
对于用户(比如医生、患者):他们能参与到问题定义中,确保系统是"为自己设计的",而不是"被强加的";
对于项目本身:它能降低返工风险、控制成本,让开发过程更聚焦、更高效。
下次当你听到"我们要做个XX系统"时,不妨先问一句:"我们真的理解用户的问题了吗?" ------ 这就是 PDOA 的核心精神:先理解问题域,再定义需求;先搞懂"为什么做",再决定"怎么做"。
毕竟,所有好的系统,都是从"解决真问题"开始的。