软件需求分析也称为需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程,是系统分析和软件设计阶之间的桥梁。
主要表现在:
1. 需求分析以系统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整。
2. 需求规格说明又是软件开发设计、以及实现和测试直至维护的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量,提高软件系统的稳定性和健全性。
需求分析的工作大致可以分为四个方面:问题识别、分析与综合、制订规格说明、评审。
问题识别:就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准。这些需求包括:功能需求(做什么)、性能需求(要达到什么指标)、环境需求(如机型、操作系统等)、可靠性需求(不发生故障的概率)、安全保密需求、用户界面需求、资源使用需求(软件运行是所需的内存、CPU)、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目标。
分析与综合逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)
制订规格说明书即编制文档,描述需求的文档称为软件需求规格说明书。请注意,需求分析阶段的成果是需求规格说明书,向下一阶段提交。
评审对功能的正确性,完整性和清晰性,以及其它需求给予评价。评审通过才可进行下一阶段的工作,否则重新进行需求分析。
需求分析的方法
1 .  功能分析方法
功能分析法即功能分解法是以系统提供的功能为中心来组织系统。首先定义各种功能然后把功能分解为子功能同时定义功能之间的接口。数据结构是根据功能/子功能的需要设计的。其基本策略是以分析员的经验为依据确定新系统所期望的处理步骤或子步骤然后将问题空间映射到功能和子功能上。
2 . 数据流分析方法
数据流分析方法也叫结构化分析其基本策略是研究问题域中数据如何流动以及在各个环节上进行何种处理从而发现数据流和加工。问题域被映射为由数据流、加工以及文件、端点等成份构成的数据流图(DFD) , 并用数据字典对数据流和加工进行详细说明。这种方法的关键是动态跟踪数据流动。
3 . 信息建模分析方法
信息建模分析方法的核心概念是实体和关系主要工具是语义数据模型(实体关系图) , 其基本策略是找出现实世界的对象然后用属性来描述对象增添对象与对象之间的关系定义父类与子类用父类型/子类型提炼属性的共性用关联对象关系作细化的描述最后进行规范化处理。其实质是将问题空间直接映射成模型中的对象。
4 .  面向对象分析方法
面向对象分析 OOA(Object- Oriented Analysis) 的基本策略是通过信息隐藏将比较容易变化的元素隐藏起来分析员基于比较稳定的元素建立其思想和规格说明的总体结构。
面向对象分析的主要特性是加强了对问题域( Problem Domain) 和系统责任( System Responsibili-ties)的理解; 改进与分析有关的各类人员之间的交流; 对需求的变化具有较强的适应性; 支持软件复用
5 . 面向本体分析方法
面向本体的需求分析 OORA (Ontology- Oriented Require-ments Analysis) , OOA方法的有效补充和提升。面向本体方法强调相关领域的本质概念以及这些概念之间的关联。其实质是在面向对象方法中引入对象关联, 并给出各种关联的语义语用。
     OORA方法由 4 个阶段来完成。第一阶段: 用一种自然语言BIDL( Bisiness Information Description Language) 描述事务; 第二阶段: 确认隐含在 BIDL文本中的本体和对象; 第三阶段: 将这些本体和对象转换成另一种语言 Ononet (Ontology and Object- Ori-ented Network) , 得到用 Ononet 书写的需求预定义; 第四阶段: 在采用 Ononet 作为知识表示形式的领域本体知识库中搜索相关的知识, 并和前面的需求预定义合并, 得到软件完整的需求定义。
6 . 形式化分析方法
形式化分析方法, 广义上讲, 是应用数学的手段来设计、 模拟和分析, 得到像数学公式那样精确的表示。从狭义上讲, 就是使用一种形式语言进行语言公式的形式推理, 用于检查语法的良构性并证明某些属性。在需求分析阶段, 利用形式化方法得到需求规格说明书, 可以规范软件开发过程, 为获得更好的系统性能提供重要保证。
需求分析的特点及难点
1. 确定问题难。主要原因:一是应用领域的复杂性及业务变化,难以具体确定;二是用户需求所涉及的多因素引起的,比如运行环境和系统功能、性能、可靠性和接口等。
2. 需求时常变化。软件的需求在整个软件生存周期,常会随着时间和业务而有所变化。有的用户需求经常变化,一些企业可能正处在体制改革与企业重组的变动期和成长期,其企业需求不成熟、不稳定和不规范,致使需求具有动态性。
3. 交流难以达到共识。需求分析涉及的人事物及相关因素多,与用户、业务专家、需求工程师和项目管理员等进行交流时,不同的背景知识、角色和角度等,使交流共识较难。
4. 获取的需求难以达到完备与一致。由于不同人员对系统的要求认识不尽相同,所以对问题的表述不够准确,各方面的需求还可能存在着矛盾。难以消除矛盾,形成完备和一致的定义。
5. 需求难以进行深入的分析与完善。需求理解对不全面准确的分析,客户环境和业务流程的改变。市场趋势的变化等。也会随着分析、设计和实现而不断深入完善,可能在最后重新修订软件需求。分析人员应认识到需求变化的必然性,并采取措施减少需求变更对软件的影响。对必要的变更需求要经过认真评审、跟踪和比较分析后才能实施。
需求分析文档的编写:
需求调研和分析完成后,就是要根据需求分析内容来编写需求分析文档,也叫需求说明书,当然需求文档根据不同阶段也会再细分。文档怎么写呢?最好的上手方法就是——找模板,根据模板来做“完型填写”,这样就不会出现漏项、缺项,属于武功里的“秘籍”部分。上哪能找到这些专业的需求文档呢?
“产品讲学堂”推出属于咱产品人自己的文档类平台——产品学习网(http://www.cpstudy.com),在这里也可以学习产品知识、下载项目、产品管理文档,也可以上传你自己的产品文档,供行业人员使用。
快看看它的庐山真面目吧:
这么多的好宝贝,以后工作就不用愁了,快来分享学习吧!
产品讲学堂,我们只专注互联网产品,讲产品故事!
    更多干货请长按二维码关注
继续阅读
阅读原文