首页...需求获取与需求分析方法
软件开发实践第二章 需求工程/第二节

需求获取与需求分析方法

2026-03-24

第二章 需求工程

第二节 需求获取与需求分析方法

概述

需求工程是软件开发的基础环节,而需求获取与需求分析则是需求工程中最关键的两个阶段。本节内容旨在帮助学习者系统掌握需求获取的基本方法及技巧,以及如何进行需求分析,从而准确理解和定义软件系统应满足的功能和性能要求。通过深入讲解需求获取与需求分析的概念、步骤、方法和工具,配合典型案例分析,帮助考生建立严密的需求思维,提升需求工程的实战能力。

学习目标:

  • 理解需求获取和需求分析的定义与区别
  • 掌握常用的需求获取技术和方法
  • 熟悉需求分析的流程和工具
  • 能够识别和解决需求获取与分析过程中的常见问题
  • 通过案例掌握实际需求工程的操作技巧

核心概念

  1. 需求(Requirement):指软件系统必须具备的功能、性能、约束和属性,是用户对系统的期望和要求。

  2. 需求获取(Requirements Elicitation):收集和发现用户需求的过程,确保需求的全面性和准确性。

  3. 需求分析(Requirements Analysis):对获取的需求进行分类、细化、验证和组织,形成清晰、一致的需求规格说明。

  4. 需求规格说明书(SRS, Software Requirements Specification):详细描述软件系统需求的正式文档。

  5. 利益相关者(Stakeholders):涉及项目的所有人员,包括用户、客户、开发团队、管理者等。

  6. 用例(Use Case):描述系统与外部实体交互的场景,体现功能需求。

  7. 需求优先级:对需求的重要性和实现顺序进行排序。


原理分析

需求获取的原理

需求获取的目的是从各种利益相关者那里收集完整、真实且有效的需求信息。需求可能隐含、模糊或相互冲突,因此获取过程需要采用多种技术手段,确保信息的准确性和全面性。需求获取不仅是信息收集,更是沟通和理解的过程,强调与用户和其他利益相关者的互动。

需求分析的原理

需求分析基于获取的需求信息,进行系统化梳理和处理。分析过程包括需求分类(功能需求、非功能需求)、识别需求间的关系和依赖、消除矛盾和模糊点、进行需求验证和确认。分析结果应形成规范化、可理解、无歧义的需求规格。

需求分析强调需求的可行性、完整性和一致性,同时兼顾系统设计的可实现性。


详细内容

1. 需求获取方法

需求获取是需求工程的第一步,常用的方法包括:

  • 访谈法:通过与用户或利益相关者进行一对一或小组访谈,获取需求信息。

    • 优点:可深入了解用户需求背景和动机,灵活互动。
    • 缺点:依赖访谈技巧,可能遗漏隐性需求。
  • 问卷调查法:设计结构化问卷,收集大量用户的需求意见。

    • 优点:效率高,适合大规模用户。
    • 缺点:难以获取深入信息,设计问卷难度大。
  • 观察法:观察用户实际工作流程和行为,发现隐含需求。

    • 优点:真实反映用户操作,有助于发现未表达的需求。
    • 缺点:耗时,可能受观察者影响。
  • 头脑风暴法:组织利益相关者集体讨论,激发创意和需求。

    • 优点:多角度提出需求,促进创新。
    • 缺点:管理复杂,可能出现偏离主题。
  • 文档分析法:分析现有系统文档、规范、报告等资料。

    • 优点:节省时间,获取历史需求。
    • 缺点:可能过时或不完整。
  • 原型法:构建软件原型,帮助用户形象化表达需求。

    • 优点:直观,易于沟通和修改。
    • 缺点:制作成本较高,易引起误解。

2. 需求分析流程

需求分析一般包括以下步骤:

  1. 需求分类:将需求划分为功能需求、性能需求、约束条件等。
  2. 需求细化:将高层需求拆解为具体的子需求。
  3. 需求冲突识别与解决:发现需求间的矛盾,协调利益相关者达成一致。
  4. 需求优先级确定:根据重要性和实现难度排序。
  5. 需求建模:使用用例图、数据流图等工具进行需求表达。
  6. 需求验证:确认需求的正确性和一致性。
  7. 需求规格说明书编写:形成正式文档。

3. 需求建模技术

  • 用例图:展示系统功能及其与外部用户的交互。
  • 数据流图(DFD):描述信息流动和处理过程。
  • 状态图:展示系统状态及状态间的转变。
  • 实体关系图(ER图):描述数据及其关系。

4. 需求文档编写规范

  • 语言应准确、简洁、无歧义。
  • 应包括需求编号、描述、优先级、来源、验证方法。
  • 结构清晰,便于维护和更新。

实例分析

案例一:图书管理系统需求获取与分析

背景:某高校图书馆计划开发一套图书管理系统,实现图书借阅、归还、查询等功能。

需求获取:通过访谈图书管理员和学生用户,结合观察现有管理流程,收集需求。

分析:对需求进行分类,发现部分需求存在冲突,如管理员和学生对借阅期限的不同期待。通过会议协调,确定统一的借阅期限规则。

结论:采用用例图描述主要功能,形成需求规格说明书,为后续设计提供基础。


案例二:电子商务系统需求分析

背景:电商平台需要开发新功能,实现用户评价和推荐。

需求获取:采用问卷调查收集用户意见,结合头脑风暴讨论新功能设计。

分析:将用户需求细化为评价功能、评分机制、推荐算法接口等子需求,明确优先级。

结论:通过用例建模和数据流图,明确系统功能和数据流,确保需求完整。


案例三:医院预约挂号系统需求分析

背景:医院希望推出网上预约挂号,提高挂号效率。

需求获取:访谈医生、护士、患者,观察挂号流程,发现现有流程繁琐。

分析:识别关键需求如身份验证、预约时间选择、挂号费用支付等,明确非功能需求如系统响应时间。

结论:制定详细需求规格,确保系统设计满足用户需求。


常见误区

  1. 忽视隐性需求:只关注用户显性表达的需求,忽略潜在需求,导致系统功能不完整。

    • 正确做法:结合观察法和原型法,挖掘隐含需求。
  2. 需求获取过于依赖单一方法:如仅通过访谈,信息片面。

    • 正确做法:多种方法结合,覆盖全面。
  3. 需求分析不充分,草率形成规格说明:导致后续开发反复修改。

    • 正确做法:严格分析、验证,确保需求准确。
  4. 忽视需求间的冲突:未及时解决需求矛盾,影响系统设计。

    • 正确做法:协调利益相关者,统一需求。
  5. 需求优先级不明确:导致资源分配和开发顺序混乱。

    • 正确做法:明确优先级,合理安排开发计划。

应用场景

  • 软件项目启动阶段的需求调研与分析
  • 需求变更管理中的需求重新获取与评估
  • 新系统替换老系统时的需求迁移与确认
  • 面向用户定制软件解决方案的需求沟通
  • 质量保证过程中需求验证与确认

知识拓展

  • 需求管理(Requirements Management):需求获取和分析后,如何跟踪和控制需求变更,确保项目顺利进行。

  • 敏捷需求获取:敏捷开发环境中需求获取的持续性和迭代性特点。

  • 需求工程工具:如JIRA、DOORS等工具在需求管理和分析中的应用。

  • 非功能需求的分析:安全性、可靠性、性能等非功能需求的特殊处理方法。

  • 需求验证技术:评审、原型验证、测试用例设计等方法。


总结回顾

需求获取与需求分析是软件开发生命周期中至关重要的环节。准确、全面的需求获取为系统开发奠定坚实基础,而科学严谨的需求分析则保证需求的合理性和可实现性。本节重点讲解了需求获取的多种方法及其特点,详细阐述了需求分析的流程和建模技术,配合典型案例帮助理解实际操作。掌握这些内容能够有效避免需求错误和遗漏,提高软件项目成功率。

考生应重点掌握:需求获取与分析的定义、方法、流程和注意事项;如何运用建模工具表达需求;识别并解决需求冲突;编写规范的需求规格说明书;以及结合实际案例提高实战能力。


关键词汇总结

  • 需求获取
  • 需求分析
  • 用例建模
  • 需求规格说明书
  • 需求优先级
  • 利益相关者
  • 需求验证

重点知识点

1

需求获取的定义及重要性

2

常用需求获取方法及其优缺点

3

需求分析的流程和关键步骤

4

需求建模技术及工具应用

5

需求规格说明书的编写规范

6

典型需求获取与分析案例解析

7

需求冲突识别与解决方法

8

需求优先级确定的重要性

9

常见需求获取与分析误区

10

需求获取与分析的实际应用场景