2.系统开发基础-需求分析(3)

来源:互联网 发布:openresty java开发 编辑:程序博客网 时间:2024/05/02 04:53

需求分析

需求分析是明确系统是应该具备所需功能和完成相关操作,其实就是准确完整的理解用户的需求并正确的表述出来,这也是需求分析的任务。需求分析是软件工程的一个关键过程。在这个过程当中,系统分析师和软件设计师确定客户的需要,只有确定需要之后,才能够分析和寻求新系统的解决方法。
以前人们认为需求分析是整个软件工程当中最简单的步骤,但在过去十多年中越来越多的人认为需求分析是整个软件开发过程中最关键的过程。如果在需求分析阶段时,分析者没有正确认识到客户的需求,最后开发出来的软件不符合客户的需求与期望,不可能使客户满意。这就会导致整个产品开发的时间延期甚至失败。
所以说需求分析是最关键的工作,也是最困难的工作。它的困难在于:一、用户和开发人员很难进行交流,二、用户的需求是变化的。
用户和开发人员很难进行交流
客户可能只知道业务不懂技术,而开发人员掌握技术但可能不懂客户业务和需求。而且不可能在短期内搞清楚客户的业务。综上所述,这样导致了客户和开发人员很难立马了解对方,因此就存在沟通的上障碍。
用户的需求是变化的
特别是对于大型复杂的软件系统,用户很难完整准确的提出它的功能和性能上的要求,很多只是抽象模糊的功能,只有长时间的反复认识才会逐步明确。有时进入设计编程阶段,还在变化。在实际软件开发过程中,经常见到开发后期,客户还在提出新的要求,显然对软件开发带来了困难。

需求的任务

需求分析的主要任务,明确系统是应该具备所需功能和完成相关操作,其实就是准确完整的理解用户的需求,并正确的表述出来。

需求的过程

需求分析的步骤:问题的识别、分析与综合、编制需求分析文档、需求分析与评审。

问题识别

从系统角度理解软件,确定所开发系统的综合要求,并提出这些需要的实现条件以及需求达到具体的标准。这些需求包括:功能需求、性能要求、环境要求、可靠性要求。
  • 功能需求系统能够完成所需求的功能。
  • 性能要求:达到所要求系统操作的指标。
  • 环境要求:开始执行操作系统的所需的前提。
  • 可靠性要求:保密性和安全性需求、用户界面需求、资源使用需求。

分析与综合

分析阶段细化所有软件功能找出系统各元素间的联系,结合软件特性和设计上的限制再分析它们是否满足需要,剔除不合理的部分而增加需要部分,之后综合成系统解决方案,最后给出系统开发需要的详细逻辑模型。

编制需求分析文档

描述需求的文档。将开发人员获取到用户的需求写下来形成需求分析文档,并将文档提交给下一阶段。

需求分析功能评审

对系统功能的正确性、完整性、清晰性进行用户需求评价。评审通过之后才可进入下一阶段的工作,否则重新进入需求分析。

需求的分类

需求分类可以分为:功能需求、非功能需求、设计约束。

  • 非功能需求功能性以外的需求,主要指包括性能需求、可靠性需求等
  • 设计约束:用户为了满足自身需要和方便,特别提出来的一些约束条件。

项目管理需求分类

另外还有一种需求分类是从项目管理的角度出发的:基本需求、期望需求、兴奋需求。

  • 基本需求:在这个系统当中,客户明确描述出系统应该具备什么功能。
  • 期望需求:客户没有描述出来的需求,但是系统必须支持这些需求。
  • 兴奋需求:客户没有提出来并且不一定帮他实现的需求。

应用的工具

需求分析阶段应用的工具:数据流图、数据字典、判定表、判断树。判定表和判定树不一定只用于需求分析阶段,在测试用例时,也用的到。数据流图和数据字典一般用于需求分析阶段。

  • 数据流图:数据的传递和加工以图形化的方式表示系统的逻辑功能,描绘数据在系统中流动和处理的过程,反应出系统必须完成的逻辑功能,因此它是一种功能模型。它由数据流、数据源、数据加工、数据存储四部分组成。
  • 数据字典:是对数据流图的补充,数据流图所有成分和定义和解析的文字集合。它的作用:给数据流图上的每一个成分,加以定义和说明。而且在数据字典中,建立了一组严密一致的定义很有助于定义分析源改进与用户的通信。
  • 判定表:使用二维表格将复杂的问题按照可能的情况全部列举出来。判定表的作用:简明表示数据以避免遗漏。
  • 判定树:当用户不容易接受判定表描述方式时,可以用判定树的形式。判断树是一种将判定表转化为图形化的表示,更容易被用户理解。



0 0