ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

软件需求分析核心考点与实战方法:从DFD到用例建模与需求管理

软件需求分析核心考点与实战方法:从DFD到用例建模与需求管理 我当年翻教材翻到“11.4 软件需求分析”这一节时心里其实有点轻视它。都做软件这行这么久了需求分析不就是问用户想要什么、把需求整理成文档吗直到自己带过几个项目、又回头系统性地重读软考教材才意识到这节内容分量极重。系统分析师考试上午选择题、下午案例题、论文题三个板块需求分析全部覆盖而且出题频率相当高。尤其是下午的案例分析题动不动就给你一大段业务描述让你画数据流图、补数据字典、分析需求缺陷或者判断需求获取方法用哪种更合适。你要是只停留在“问用户想要什么”这个层面根本答不到得分点。这篇文章我就以考试和应用双视角把这节内容重新拆一遍。目标很简单让正在备考系统分析师的朋友们知道每个考点背后对应什么逻辑、答题时怎么组织语言才不容易被扣分也让没在备考、但在项目实践中被需求搞得很痛苦的同学能找回一套真正可落地的需求分析方法。1. 软件需求分析在系统分析师考试中的定位1.1 上午选择题基础概念是送分题上午的选择题涉及需求分析的内容整体难度不高但覆盖面比较广。常考的点集中在需求分类、需求获取方法、需求建模工具、需求验证手段以及需求追踪矩阵的作用。这类选择题基本就是让你判断哪种说法正确或者在某一个具体场景下选择合适的方法。比如题干给你一个场景用户对目标系统的功能只有模糊想法无法用文字清晰描述自己的需求这时候最适合采用哪种需求获取方法答案就是原型法。再比如“数据字典中一般不包含下列哪项内容”考察的就是对数据字典四个元素数据项、数据结构、数据流、数据存储的掌握。这些题只要把教材过一遍基本都能拿分真正拉开差距的是下午的案例分析和论文。1.2 下午案例题需求分析是大题常客系统分析师下午案例分析题常以信息系统项目为背景给出大段的业务材料然后要求你用结构化方法或面向对象方法完成分析建模。结构化方法的核心产物集中在数据流图、实体联系图和数据字典面向对象方法则重点考察用例图、用例描述、活动图和类图的前期分析。在实际阅卷中案例题非常看重答题的规范性。举个简单的例子让你补充数据流图中缺失的数据流你光写一个“订单”这样一两个词多半会被扣分。规范的写法应该是“订单信息”并且尽量使用题目材料中的原始表述不要自己发明名词。再比如让你对加工命名标准语法是“动词宾语”如“审核库存”“生成对账单”而不是直接用“库存审核流程”这种看起来像模块名的说法。1.3 论文题需求分析是万能素材系统分析师论文题目虽然年年有变化但需求分析几乎是万能的写作素材。无论是“论信息系统的需求分析方法”“论软件需求管理”还是“论系统建模”你都可以把项目需求分析的完整过程套进去。阅卷老师看论文看的是你写的是不是自己真实经历、思路是否清晰、方法是否得当、问题是否真实。我身边考过这个证书的朋友几乎人人手里都攒了两三个“可写项目”一个传统信息系统改造类项目用来写结构化需求分析方法一个面向对象的业务系统或数据平台类项目用来写用例建模和迭代式需求管理。这样无论论文题目怎么变都有素材可调用。2. 需求获取与建模先搞清楚“做什么”2.1 需求分类别把“用户想要”和“系统要做”混为一谈很多考生第一个概念混淆点就在这里。业务需求、用户需求、系统需求不是同一层级的词功能需求和非功能需求也不是一个维度上的分类。业务需求描述组织为什么要做这个系统通常源自高层目标比如“缩短订单响应时间”。用户需求是用户视角下的目标或任务比如“我希望能够一键查询历史订单”。系统需求则是从技术视角描述系统必须提供给用户的能力和约束包括功能需求、性能需求、安全需求等。考试中容易丢分的情况是把“系统要实现用户登录和权限控制”直接写成业务需求但严格来说它属于系统需求中的功能需求而且是很底层的支撑性功能。答题时如果你能先给出“业务需求、用户需求、系统需求”三层划分再说明题目材料中哪些话分别属于哪一层得分点就明显更清晰。在项目里这种分类的实际意义更大。业务方嘴上说的往往是用户需求但如果你只盯着用户需求做很容易忽略背后真正的业务目标。比如用户说要“增加一个报表导出按钮”背后的业务需求其实是“管理层需要每周快速获取各区域销售汇总数据”。如果只做导出按钮正确的报表结构和数据口径没对齐做出来的东西照样没人用。2.2 四种需求获取方法怎么选教材里给出的需求获取方法一般包括访谈法、问卷调查法、原型法、联合应用开发JAD。考试中经常让考生结合实际场景选择合适的方法并说明理由。这里给出我的总结既适合答题也适合项目实操。访谈法最通用适合与关键用户、业务负责人进行深度交流优点是能深入追问细节缺点是效率低、很难覆盖大规模用户群。问卷调查法适合用户群体分散、样本量较大的场景能够快速收集量化意见但问题设计得不好就会影响结果质量。原型法适合用户需求模糊、难以描述的场景通过快速搭建可交互原型让用户直观感受从而逐步明确需求。联合应用开发适合涉及多个业务部门、需要多方当场决策的复杂项目通过集中式研讨会达成共识但要求干系人全程参与组织成本较高。项目里实际选择时我的经验是不要只用单一方法。比如做医院信息集成平台时核心临床科室需求相对明确用访谈法而门诊患者手机端应用的用户需求就很发散适合先做高保真原型再结合问卷进行大规模确认。考试答题时只要选择理由里体现了“用户特点”“需求清晰度”这两个维度基本不会偏。2.3 结构化分析三件套DFD、ERD、数据字典结构化需求分析的重点是三个工具数据流图DFD、实体联系图ERD、数据字典。DFD描述系统的数据流向和处理逻辑ERD描述业务数据之间的关系数据字典则对所有数据元素进行精确定义。DFD考试频率最高不仅是画图还包括补图、查错。画DFD要把握四个元素外部实体用矩形表示、加工/处理用圆角矩形表示、数据存储用开口矩形表示、数据流用箭头表示。分层绘制时父图与子图必须保持平衡父图中某个加工的输入输出数据流必须与子图中的输入输出数据流一致。这是案例题最爱考的点。数据流命名也要规范。很多人把“读取用户表”写成“用户表读取记录”严格说这不叫数据流而更像一个动作。数据流是数据的流动命名应该是一个名词性短语比如“用户登录信息”“库存变更记录”。加工命名则相反用“动词宾语”比如“校验用户密码”“计算订单金额”。数据字典很多人觉得就是“字段说明表”这个理解太小了。数据字典包括数据项、数据结构、数据流、数据存储、处理逻辑五个部分。其中处理逻辑常用结构化语言、判定表或判定树描述。案例题里有时会直接让你为一个加工写处理逻辑这时用“IF-THEN-ELSE”形式写清楚条件分支即可不要画蛇添足写代码。3. 面向对象需求分析用例模型是核心3.1 识别用例的三个常见坑近些年考试越来越强调面向对象方法用例图成为案例题和论文都绕不开的工具。用例模型的目标是描述系统外部参与者与系统之间的交互。很多人以为画用例图就是画几个椭圆实际上用例识别才是最容易错的地方。第一个坑把“登录”“注册”当业务用例。登录是支撑性功能不是业务目标。在采购管理系统中真正的用例是“提交采购申请”“审批采购单”“核对到货信息”登录只是使用系统的前提动作。当然如果系统本身就是一个身份认证平台登录可以成为核心用例那另当别论。第二个坑混淆include和extend关系。include表示基本用例必然包含某个公共步骤比如“提交订单”包含“校验库存”extend表示可选扩展比如“提交订单”扩展出“使用优惠券”。考试时判断题干里说的是“一定会发生”还是“在特定条件下发生”就能很快选对。第三个坑遗漏参与者。参与者不只是人还包括外部系统、定时触发器等角色。比如电商系统里支付网关就是一个典型的外部系统参与者库存系统也可以是参与者。画用例图之前先列出所有参与者能有效避免遗漏。3.2 用例描述不是画完图就结束用例图只是需求分析的骨架真正承载需求细节的是用例描述。一个完整的用例描述应包含用例名称、参与者、前置条件、基本事件流、异常事件流、后置条件。论文写作时最好将其中一个核心用例完整呈现出来性价比很高。以“提交请假申请”为例基本事件流可以写成用户进入请假申请页面填写请假类型、起止时间、请假事由提交后系统校验部门审批规则并保存申请记录推送审批通知给部门负责人。异常事件流要覆盖请假时长超过可用余额、审批人被驳回、系统保存失败等。前置条件是用户已登录且具有员工权限后置条件是请假申请处于待审批状态并生成申请单号。案例题有时会要求你识别活动图中的并发分支比如审批环节“部门经理审批”和“人事备案”并行执行。这里考的是活动图对流程建模的表达能力与用例描述结合着写会显得更完整。4. 需求管理追踪矩阵和变更控制4.1 需求追踪矩阵这样写才不会被扣分案例题中有一类常见题型给出一张需求追踪矩阵表格其中有几行是空的让你补充或指出矩阵缺失了什么。需求追踪矩阵本质上是一张保证“需求—设计—测试”全链路可追踪的对照表。标准矩阵至少应包含以下列需求编号、需求描述、需求来源、优先级、涉及的系统模块/设计文档、对应的测试用例、当前状态。如果考试材料里没有给出测试用例编号你可以填写“应在后续测试设计阶段补充”但要明确指出矩阵缺少这个维度。写矩阵时要注意“每个需求都必须有去向、有来源”。比如一条需求“系统支持按部门查询员工考勤明细”来源可以是“人事部门访谈记录”对应模块是“考勤管理子系统”测试用例是“TC-ATT-001”。如果题目里给出了已经设计好的编号直接照抄题目中的编号即可。4.2 需求变更的完整控制流程需求变更控制几乎是每年必考的关键流程。特别是案例题里出现“某需求在项目中期发生变更但没有走流程导致进度延误和返工”要求你分析原因、提出改进措施实际上就是在考察变更控制流程。完整的需求变更流程应为用户或业务方提出变更申请配置管理员记录变更请求变更控制委员会CCB组织影响分析评估变更范围、成本、进度、风险批准或拒绝变更若批准则更新需求文档和基线并分配任务实施变更后通知所有干系人同时更新需求追踪矩阵和测试用例。答题时一定要写清楚“任何变更都不能直接跳过CCB”即使是很小的文案调整也应记录在案。项目实操中这种“小变更不走流程”的问题非常常见最后往往变成需求蔓延。备考同学可以把这段表述背熟案例题里直接套用。5. 需求验证与质量属性5.1 验证与确认的区别需求验证包括“验证Verification”和“确认Validation”两个概念。验证回答的是“我们有没有正确地构建需求”确认回答的是“我们构建的是不是用户真正需要的”。前者偏向于内部一致性检查后者偏向于用户验收。考试中常出现判断型选择题或案例简答比如“需求评审属于验证还是确认”正规技术评审主要是验证需求验收时让用户试用原型则是确认。答题中把这两个词都写上并分别解释各自的关注点能明显体现你对概念的精准把握。需求评审的组织方式是另一个考点。常见形式包括正式评审会议、同行走查、桌面检查。正式评审需要角色分工主持人、记录员、需求作者、评审专家、用户代表。评审的产出是问题清单而不是直接修改原文。这一点在项目管理中也是铁律评审发现问题先记录、再讨论不要现场改文档否则很容易把讨论带偏。5.2 高质量需求的六个特征教材中给出的高质量需求特征一般包括正确性、完整性、一致性、无歧义性、可验证性、可追踪性。这六个特征也是案例题分析需求缺陷时的框架。正确性指需求必须准确反映用户的真实意图完整性指所有功能场景、边界条件、异常流程都覆盖一致性指各需求项之间不存在冲突无歧义性指每个需求只能有一种理解可验证性指需求可以通过测试或检查手段确认是否实现可追踪性指需求有明确的来源和去向。我在实际项目中见过最典型的问题是“系统性歧义”。比如“系统应在发现异常时进行实时告警”这句话里的“异常”是什么“实时”是几秒内“告警”方式是页面提示还是短信如果不量化开发、测试、运维的理解完全可能不一致。规范写法是“当库存数量低于安全库存阈值时系统在1分钟内产生告警记录同时向库管员发送短信通知”。5.3 非功能需求最容易漏项功能需求容易梳理非功能需求往往被忽略而考试和项目里出问题最多的恰恰是这个部分。非功能需求包括性能、可靠性、可用性、安全性、可维护性、可移植性等。性能需求必须量化如“系统支持500个并发用户平均响应时间不超过3秒”。安全需求则要考虑身份认证、权限控制、数据加密传输、日志审计等。这里顺便提一个备考热点很多考纲和教材中都会涉及国产加密算法相关内容比如SM2、SM3、SM4等。在涉及到政务、金融、涉密单位的项目需求分析中安全需求部分经常被单列为合规项像“用户敏感字段传输过程使用国密算法加密”“重要数据存储时采用SM4算法加密”这类需求就属于非功能需求中的安全需求。考试时如果题目背景是政务类系统并且提到密码算法合规的要求你在需求清单里列出类似的非功能需求项很容易踩中得分点。6. 案例题答题套路与论文素材准备6.1 案例题的标准答法案例题除了考察知识面也在考察表达规范。我结合阅卷特点总结出三个答题原则。第一答案中必须出现教材中的标准术语。题目问“如何判断需求是否完备”你回答“应检查需求是否正确、完整、一致、无歧义、可验证、可追踪”比写“要看看需求有没有遗漏”得分概率高得多。第二遇到“给方法选理由”的题采用“方法适用条件本题场景印证”的结构。比如建议采用原型法因为用户对本系统功能只有初步构想原型法通过快速搭建可运行界面能帮助用户在直观体验中逐步确认和修正需求这与题目描述的“需求模糊、急于验证想法”的特点高度吻合。第三画图题注意标注。DFD图中每个加工都要有编号1、2、3…数据存储要有唯一名称外部实体之间不要画线。ERD中联系要标注联系类型1:1、1:N、M:N。哪怕画得不漂亮只要要素齐全阅卷老师就能给步骤分。6.2 论文素材库的搭建方法系统分析师论文需要实打实的项目积累但并非每个考生都做过大型项目。我的建议是准备两个“原型项目”并反复打磨素材。第一个项目选传统信息系统类比如企业采购管理系统或医院排班系统。在素材中写清楚需求获取用了哪些方法、如何绘制分层DFD、数据字典包含哪些条目、需求评审时发现了哪些冲突问题、如何通过需求追踪矩阵管控需求变更。第二个项目选面向对象或平台化项目比如数据分析平台或移动端应用。重点写用例建模过程、用例描述如何落实到开发任务、需求变更的CCB评审过程。每个项目素材里还要准备一个“痛点场景”。比如错过需求评审导致后期返工或者用户频繁变更需求导致进度失控。阅卷老师更看重你处理问题的思路而不是项目本身多高大上。7. 常见错误与备考建议7.1 高频易错点自查表下表是我结合多年考题和学员反馈总结出的高频易错点考前建议逐条自查。易错点正确理解常见错误DFD与系统流程图DFD只关注数据流不画控制信息和控制流把判断分支、控制时序画进DFD数据流命名用名词短语描述数据内容用“读取/写入对象”的动词短语表示数据流加工命名用“动词宾语”描述处理动作用系统模块名或功能列表名代替加工用例图include基本用例必然包含公共子流程把可选的、条件触发的功能写成include用例图extend特定条件下才执行的扩展功能把核心步骤误写成extend数据字典条目数据项、数据结构、数据流、数据存储把外部实体也当作数据字典内容需求优先级MoSCoW必须、应该、可以、暂不凭感觉排优先级没有业务标准需求变更必须经过CCB审批和影响分析客户口头一句就立即改设计7.2 备考节奏与学习建议如果你是零基础备考系统分析师建议按“教材通读→真题训练→专题总结”三遍法来安排。第一遍通读11.4这一节时先建立整体框架明白需求分析“获取—建模—管理—验证”四条主线即可。第二遍做近五年案例真题每道题都要亲手画图不能只在脑内构思。第三遍针对错题做专题总结把数据字典、用例建模、需求追踪矩阵、非功能需求这几个高频模块单独整理成背诵卡片。我自己在备考时发现最有效的练习方式是“互相出题”。找两三个考友每人从实际项目中截取一段需求描述让大家分别画出DFD和用例图然后互相找缺陷。这个流程非常接近案例题的真实场景练上三套你的图感和题感都会有明显提升。最后再说一点个人感受。备考系统分析师的过程其实很像整理自己的技术债务你以为你懂需求分析但在备考和复盘时你会发现很多平时被忽略的环节比如非功能需求量化、需求追踪矩阵维护、变更影响分析才是项目里真正失控的地方。复习这套知识不只是为了通过考试更是在帮自己把项目做法规范化。我当时考完最大的收获反而是把后续几个项目的需求阶段管理明显做得更顺了。你如果正在备考我的建议是把这节内容当成核心章节来复习它值得你投入的时间绝对不比算法部分少。
返回列表