ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

软件方法第2章:从“老大思维”到业务建模的需求分析实践

软件方法第2章:从“老大思维”到业务建模的需求分析实践 我第一次读完《软件方法》第2章脑子里的第一个念头不是“方法真好”而是“这书里的老大到底是谁”。不夸张地说当时项目组里所有人都在谈“老大”——客户方的“老大”要一个看板业务部门的老大要一个审批流技术团队的老大说必须统一中台。结果呢项目做了三个月需求文档改到第十版最后上线的功能有一半没人用。后来我重读《软件方法》才慢慢想明白一个道理我们一直在围着“老大”转却忘了软件方法第2章真正想让我们做的是回到业务本身把组织当作一个系统去看。这篇文章就当是一次复盘聊聊我为什么最终放弃了“老大”这条看似好走的路以及现在我会怎么用《软件方法》第2章里的思路去做需求分析。1. 为什么一开始我对“老大”非常着迷1.1 一个典型的“老大拍板”项目现场先说说让我翻车的那个项目。客户是一家做连锁餐饮的公司我们团队被请去做门店运营管理系统。初次进场调研客户方的项目负责人——大家都称他为“老大”——很热情上来就说“需求我都想好了你们只要帮我把门店每天的销售数据、库存数据、员工排班放到一个大屏上总部能实时看到这事就成了。”听到这话团队里几个开发立刻眼睛发光觉得老大这么明确需求都不用分析直接干。于是我们按照老大的描述画了十几个大屏界面接好了数据接口模型评审也顺利通过。可等到给门店店长和区域督导演示的时候现场气氛降到冰点。店长们问“大屏上的库存数更新频率是多少如果我这边库存不准大屏显示再漂亮有什么意义”督导们问“我关心的是哪些店异常不是这张全国地图上的红色绿色我看不过来。”那一刻我才明白老大嘴里说出来的“需求”和他底下的真实业务根本不是一回事。1.2 《软件方法》第2章给我的第一道冲击带着这个失败案例去翻《软件方法》正好读到第2章。书里反复强调一个观点业务建模的目标不是“问用户你要什么”而是搞清楚组织是怎么运转的。这话看似平平无奇但对于当时的我来说简直是当头一棒。在此之前我做需求调研的默认路径就是找到关键决策人听他讲需求然后记录下来形成文档。我把“老大”当成了需求的金矿以为只要把他的想法挖干净项目就成功了。《软件方法》第2章却告诉我组织是一个由不同角色、不同职责、不同协作关系构成的整体。老大只是其中一个角色而且往往是离具体业务最远的角色。如果他说的东西直接拿来做系统那系统大概率只服务了他一个人的想象力而不是组织的真实运行逻辑。这个认知转变直接导致了我后来“放弃老大”的决定不是不尊重老大的权力而是不再把老大的话当成需求的第一来源。2. “老大依赖症”到底坑在哪里2.1 老大的视角不等于业务视角老大的位置决定了他只能看到汇报上来的数据、各条线的总结、以及各种会议纪要。他看业务是鸟瞰图能看清森林的轮廓但看不清每一棵树的生长状况。可软件系统恰恰是长在具体的业务流程里的它要服务的是那些日常执行动作的人。举个例子。老大说“我要一个智能排班系统能用算法自动生成门店排班表”。从老大的视角看这个需求非常清晰。但如果你到门店里去观察真实排班过程会发现排班不只是“谁在什么时间上班”还包括员工技能等级、高峰期人手需求、兼职人员的可用时间、甚至劳动法规定的工时上限。这些约束条件老大不知道也不想知道。他觉得“算法生成”四个字就能解决一切但真实业务根本不是这样。如果我只听老大的做出来的排班算法一定会在落地时被店长们抵制因为他们没法调整细节。所以《软件方法》第2章让我意识到老大的描述只能作为“线索”真正的需求必须回到业务现场去找。2.2 组织不是老大的提线木偶《软件方法》第2章里有一个很重要的工具业务用例图。它是用来表达组织对外提供的价值和内部协作关系的。在这个图里系统的目标不是“某个人想要什么”而是“组织在为什么样的外部角色创造价值”。还是说餐饮门店。门店这个组织它的目标不是“给老大一个看板”而是“为顾客提供稳定品质的餐食和服务”。围绕这个目标门店需要采购、备货、制作、送餐、收款、处理投诉等一系列业务。老大想看大屏只是他作为管理者的一个诉求不代表组织目标本身。我过去习惯把“老大”当作用例图中的主角满脑子都是“老大要什么功能”。学完《软件方法》第2章之后我学会把“老大”放到后台先把组织对外的业务价值画出来再去找业务执行者。这样一来真正的用户不是老大而是门店店长、厨师、服务员、采购专员、财务人员。每个人都有自己的业务用例每个人都有自己要处理的对象。老大只是这个协作网络里的一部分。这个思路一旦建立起来需求分析就从一个“听人说话”的过程变成了一个“观察组织运转”的过程。也正因如此我后来在项目里逐渐放弃了对“老大”的路径依赖。3. 放弃“老大”之后我是怎么落地《软件方法》第2章的3.1 业务建模的五步操作法从“听老大”切换到“看业务”需要一套具体的操作流程。我根据《软件方法》第2章的内容结合自己的项目实践总结出了五个步骤也推荐给身边不少同行使用。第一步划定组织边界。先别急着画系统先把你要分析的组织单元圈出来。是总部是门店还是某个部门组织边界不清晰后面所有模型都会飘。第二步识别业务执行者。谁在和组织互动客户、供应商、加盟商、监管机构、内部员工列出尽可能完整的清单越全越好。第三步画业务用例图。把组织对外提供的价值表达成一个一个业务用例比如“处理顾客点餐”“完成食材采购”“结算门店营收”。这一步的目的是把组织的核心业务拉开看清楚到底有哪些活动在支撑组织运转。第四步挑选关键业务用例做序列图。不是所有业务用例都要深挖挑和项目目标关系最大的那一个。然后把该业务从触发到结束的完整过程用业务序列图画出来重点看谁发起、谁参与、谁负责、谁审批、谁留痕。第五步从模型里找问题。对照《软件方法》第2章里提到的“业务改进”思路看当前流程有没有信息断裂、角色错位、重复劳动、决策延迟。这些点就是软件系统真正的机会点。我在团队里把这五步称为“告别老大的五步法”。听起来有点像口号但实际效果非常明显特别是当你发现自己不再需要纠结“老大说的那句话到底算不算需求”的时候。3.2 一个实例把“老大的大屏”改成“业务伙伴的预警”回到前面那个餐饮项目。放弃“老大路线”之后我没有继续画大屏而是拉着团队去了三家门店蹲了两个星期。我们把门店的采购、验收、库存、销售、盘点流程完整地画了一遍业务序列图。画完之后发现真正让总部头疼的问题不是“看不到数据”而是“数据到了总部之后没人及时处理”。举个例子门店每天下午报库存数据但这个数据要等到晚上总部财务人工核对后才生成报表。如果某个门店的原材料损耗异常要两三天之后才会被发现。门店店长其实最需要的是“异常预警”而不是“漂亮的大屏”。于是我们把项目目标从“做一个老板看板”改成了“做一个面向门店店长和督导的异常预警系统”。老大还是那个老大但他不再是系统的主角。系统真正服务的业务执行者是店长和督导老大反而成了后台的管理者。这个方向调整之后业务部门配合度瞬间提升系统上线后使用率也远超预期。这个案例让我明白在“软件方法”里业务建模不是绕开老大而是把老大放回组织系统里让他和实际业务流程建立正确的连接。3.3 画图时最容易踩的细节坑业务用例图和业务序列图看着简单但实操时到处都是坑。我总结几个常见的细节问题希望对第一次尝试的人有帮助。第一个坑把业务用例画成系统功能。比如“录入销售数据”这是计算机操作不是业务用例。业务用例要表达业务价值比如“完成一笔销售”。你画的是组织的业务不是软件的功能清单。第二个坑业务序列图只画理想流程。现实中一定会有异常分支食材不合格怎么办顾客退单怎么办店员请假怎么办画序列图时如果只画一路顺风那你就看不到系统该在哪些环节提供支撑。第三个坑给业务执行者用“岗位名称”而不是“角色名称”。比如“张经理”“会计小李”这些是具体人员和岗位不是业务角色。业务角色应该用“财务审批人”“采购发起人”这类抽象表达因为在组织里一个人可能扮演多个角色一个角色也可能由多人承担。我当时就是在这几个细节上反复改图改到最后才真正理解《软件方法》第2章为什么要强调业务角色和业务对象的规范。模型不是画给别人看的漂亮图而是团队讨论和决策的共同语言。4. 常见问题与排查技巧实录4.1 业务建模就是画流程图吗这个问题几乎每次培训都会有人问。我的回答是业务建模比流程图多一个维度。流程图只描述“事情怎么发生”业务用例图还要回答“谁在为什么目标而做这件事”。同样是报销流程图可以画“填单、审批、付款”但业务建模会追问报销这个业务用例的执行者是谁是员工、部门经理还是财务组织为什么要提供报销这个业务它的价值对象是什么如果你只画流程图很容易陷入“现状自动化”的误区也就是把现有流程搬到系统里流程本身的问题一点没解决。《软件方法》第2章里讲业务建模核心目标就是发现改进机会。所以别把业务建模当成画图任务它更像是一个诊断过程。4.2 老大不配合访谈约不到怎么办放弃老大的第一个现实困难就是老大不给资源。他不参加访谈、不安排业务骨干、甚至觉得需求分析是耽误时间。遇到这种情况我以前会慌现在反而很淡定。我的处理办法是先不和老大正面冲突而是从业务现场找突破口。找两个门店或部门和一线员工聊看他们日常工作是什么。只要业务执行者愿意说你就能画出初步的业务序列图。等模型初稿出来再拿着模型去见老大。这时候你不用再问“老大你要什么”而是说“我理解组织是这样运转的这些地方有机会改进”老大反而愿意坐下来听。这个方法之所以有效是因为《软件方法》第2章的核心是把组织当作研究对象模型本身就是沟通工具不需要完全依赖老大的口述。4.3 模型画出来没人看懂怎么办业务模型对很多开发同事来说很抽象尤其是业务用例图和业务序列图第一次看会觉得不知道有什么用。我的经验是不要一上来就扔模型先用一段白话把业务场景讲清楚。比如我先说“门店每天下午四点半报库存总部当晚十点人工核对发现异常要第三天才能处理。”这句话谁都听得懂。然后再展示业务序列图告诉大家“这条线就是刚才说的流程这两个角色之间的信息传递导致了延迟”。先有故事再有图模型就不会劝退人。我还会在模型旁边标注“问题点”和“改进点”让看的人知道这张图不是纸面功夫而是用来支撑下一步系统需求的。4.4 问题速查表常见问题典型表现排查思路业务用例画成了系统功能用例名是“登录”“录入”“查询”换成业务价值表达如“完成销售”“处理退货”分不清业务执行者把岗位名称当角色角色列表过窄回现场观察列全所有与组织交互的角色业务序列图只画理想路径没有异常分支看不出改进点补充异常场景如驳回、重审、撤销模型和真实业务脱节业务部门说“图不对”带着模型回去找业务执行者逐条确认老大意见和模型冲突老大坚持要某个功能但业务模型不支持用模型对比老大的想法指出业务影响这张表是我在实际项目里反复修改需求文档时整理出来的。每次做业务建模我都会拿它自检一遍效果比闷头画图要好得多。4.5 一个让我印象深刻的避坑经验有一次画采购业务序列图我把“采购专员”和“仓库管理员”合并成了一个人觉得反正都是仓库那边的人。结果验证模型时才发现两个角色分属不同条线信息传递要在两个人之间发生。合并之后系统设计漏了一个关键的数据交接环节。从那之后我再也不敢靠想象去合并角色了。所有角色必须去业务现场对着名单核对哪怕看起来是同一个部门也可能存在职责分离。这个教训很朴素但很深刻。《软件方法》第2章里讲角色、对象、关系本质就是让人尊重业务的复杂性而不是拿模型去简化它。5. 一些个人体会做需求分析这些年我见过太多团队把“老大”当唯一信源也见过太多系统因为只服务老大而最终变成摆设。我自己也犯过同样的错。放弃“老大”并不是否定老大的价值而是把业务分析放到一个更可靠的基础上组织如何运作角色如何协作流程哪里失效。如果你现在也正在读《软件方法》第2章或者正在犹豫要不要从“老大思维”里跳出来我的建议是别急着上工具先去找一个真实业务场景试着画一张业务用例图再选一个关键业务画一张业务序列图。画完你就知道软件方法不是纸上谈兵它真的能帮你提前躲掉很多坑。最后再分享一个小技巧每次建模前我都会问自己一句“如果这个组织明天突然消失谁会受影响”顺着这个问题找到的业务执行者往往才是项目真正的用户。老大很重要但他通常不是那个每天和系统打交道的人。这一点想明白了需求分析的路就会顺很多。
返回列表