下载后可任意编辑第 040 页第 3 章 需求分析 需求问题是造成软件工程项目失败的主要原因,能否开发出高质量的软件,很大程度上取决于对要解决的问题的认识以及如何准确地表达出用户的需求。通过需求分析使得分析者深刻地理解和认识系统,并将其完全、准确地表达,其结果不仅起到沟通(用户和开发者)作用,还是后续工作的依据。本章介绍需求分析的一些基本概念,分别对需求猎取技术、需求规格说明书、如何进行需求分析以及需求分析方法进行讨论,重点讨论结构化的需求分析方法。 3.1.1 需求的概念和任务 什么是需求?到目前为止还没有公认的定义。对用户来讲需求是对软件产品的解释,是用户对目标软件系统在功能、行为、性能、设计和约束等方面的期望;而开发人员所讲的需求对用户来说又像是详细设计。比较权威的定义是 IEEE 软件工程标准词汇表中的需求定义: (1)用户解决问题或达到目标所需的条件或权能(Capability)。 (2)系统或系统部件要满足合同、标准、法律规范或其他正式规定文档所需具有的条件或权能。 (3)一种反映上面(1)或(2)所描述的条件或权能的文档说明。 由定义可知,需求一方面反映了系统的外部行为,另一方面反映了系统的内部特性,反映的方式是需求文档。用法律规范的格式表达出来的文档说明称为需求规格说明书,或者简称为“需求说明”。 3.1.2 需求的层次 需求可分解为 4 个层次:业务需求、用户需求、功能需求和非功能需求。 (1)业务需求(Business Requirement):业务需求是反映组织机构或客户对软件高层次的目标要求。这项需求是用户高层领导机构决定的,它确定了系统的目标、规模和范围。业务需求是需求分析阶段制定需求调研计划、确定用户核心需求和软件功能需求的依据,应在进行需求分析之前确定,通常在项目定义与范围文档中予以说明。 (2)用户需求(User Requirement):用户需求是用户使用该软件要完成的任务。要弄清这部分需求,应该充分调研具体的业务部门,详细了解最终用户的工作过程、所涉及的信息、当前系统的工作情况、与其他系统的接口等。用户需求是最重要的需求,也是最容易出现问题的部分。 (3)功能需求(Functional Requirement):功能需求定义了软件必须实现的功能。由于用户是从完成任务的角度对软件提出需求的,通常是凌乱的、非系统化的、冗余的,开发人员无法据此编写程序。分析人员必须在充分理解用户需求的基础上,将用户需求整理成满足特定业务需求的软件功能需求。 (4)...