前言
本文将结合具体项目介绍需求分析。
一、需求分析理论知识
1.需求分析是什么?
需求分析是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。需求分析的目标是把用户对待开发软件提出的“要求”或“需要”进行分析与整理,确认后形成描述完整、清晰与规范的文档,确定软件需要实现哪些功能,完成哪些工作。此外,软件的一些非功能性需求(如[软件性能、可靠性、响应时间、可扩展性等),软件设计的约束条件,运行时与其他软件的关系等也是软件需求分析的目标。需要输出一个需求规格说明书。
2.需求分析包括什么?
需求分析的内容是针对待开发软件提供完整、清晰、具体的要求,确定软件必须实现哪些任务。具体分为功能性需求、非功能性需求与设计约束三个方面。
功能性需求:
即软件必须完成哪些事,必须实现哪些功能,以及为了向其用户提供有用的功能所需执行的动作。开发人员需要亲自与用户进行交流,核实用户需求,从软件帮助用户完成事务的角度上充分描述外部行为,形成软件需求规格说明书。
非功能性需求:
作为对功能性需求的补充,软件需求分析的内容中还应该包括一些非功能需求。主要包括软件使用时对性能方面的要求、运行环境要求。软件设计必须遵循的相关标准、规范、用户界面设计的具体细节、未来可能的扩充方案等。
设计约束:
一般也称做设计限制条件,通常是对一些设计或实现方案的约束说明。例如,要求待开发软件必须使用Oracle数据库系统完成数据管理功能,运行时必须基于Linux环境等。
3.需求分析方法有哪些?
从系统分析出发,可将需求分析方法大致分为功能分解方法、结构化分析方法、信息建模法和面向对象的分析方法。
功能分解方法:
将新系统作为多功能模块的组合。各功能义可分解为若干子功能及接口,子功能再继续分解。便可得到系统的雏形,即功能分解——功能、子功能、功能接口。
结构化分析方法:
由数据流图和数据词典构成并表示。此分析法又称为数据流法。其基本策略是跟踪数据流,即研究问题域中数据流动方式及在各个环节上所进行的处理,从而发现数据流和加工。结构化分析可定义为数据流、数据处理或加工、数据存储、端点、处理说明和数据字典。
信息建模方法:
它从数据角度对现实世界建立模型。大型软件较复杂;很难直接对其分析和设计,常借助模型。模型是开发中常用工具,系统包括数据处理、事务管理和决策支持。实质上,也可看成由一系列有序模型构成,其有序模型通常为功能模型、信息模型、数据模型、控制模型和决策模型。有序是指这些模型是分别在系统的不同开发阶段及开发层次一同建立的。建立系统常用的基本工具是E—R图。经过改进后称为信息建模法,后来又发展为语义数据建模方法,并引入了许多面向对象的特点。信息建模可定义为实体或对象、属性、关系、父类型/子类型和关联对象。此方法的核心概念是实体和关系,基本工具是[E-R图],其基本要素由实体、属性和联系构成。该方法的基本策略是从现实中找出实体,然后再用属性进行描述。
面向对象的分析方法:
面向对象的分析方法的关键是识别问题域内的对象,分析它们之间的关系,并建立三类模型,即对象模型、动态模型和功能模型。面向对象主要考虑类或对象、结构与连接、继承和封装、消息通信,只表示面向对象的分析中几项最重要特征。类的对象是对问题域中事物的完整映射,包括事物的数据特征(即属性)和行为特征(即服务)。
4.需求分析特点与难点
确定问题难:
主要原因:一是应用领域的复杂性及业务变化,难以具体确定;二是用户需求所涉及的多因素引起的,比如运行环境和系统功能、性能、可靠性和接口等。
需求时常变化:
软件的需求在整个软件生存周期,常会随着时间和业务而有所变化。有的用户需求经常变化,一些企业可能正处在*改革与企业重组的变动期和成长期,其企业需求不成熟、不稳定和不规范,致使需求具有动态性。
交流难以达到共识:
需求分析涉及的人事物及相关因素多,与用户、业务专家、需求工程师和项目管理员等进行交流时,不同的背景知识、角色和角度等,使交流共识较难。
获取的需求难以达到完备与一致:
由于不同人员对系统的要求认识不尽相同,所以对问题的表述不够准确,各方面的需求还可能存在着矛盾。难以消除矛盾,形成完备和一致的定义。
需求难以进行深入的分析与完善:
需求理解对不全面准确的分析,客户环境和业务流程的改变。市场趋势的变化等。也会随着分析、设计和实现而不断深入完善,可能在最后重新修订软件需求。分析人员应认识到需求变化的必然性,并采取措施减少需求变更对软件的影响。对必要的变更需求要经过认真评审、跟踪和比较分析后才能实施。
二、基于我参与项目的需求分析
1.项目介绍
项目名称:文档管理系统
项目背景:某公司在运转过程中会产生大量文档,文档存储以及项目流转程序比较复杂,导致员工之间合作效率降低,基于此,开发文档流程系统,重点在于文档(流转/存储/安全)与项目(流程)。(point:文档;流程;任务;项目)
2.需求分析过程
需求调研(熟悉资料)——>寻找案例(禅道、纤云文档管理系统)——>竞品分析——>梳理功能——>需求规格说明书
需求调研:
与目标公司交涉,了解他们想要一个什么样的产品,对他们给出的资料进行梳理与总结,双方反馈,确保传达的需求没有误差。
寻找案例:
寻找与你要做的产品相似的比较成熟的产品,如在我做的项目中重点是文档与流程,目标公司需要的系统是可以建立项目、分配任务、存储文档等,因此我们找到案例有:禅道与纤云文档等,具体可以在网上找这些参考案例的技术白皮书或者线上体验他们的产品。
竞品分析:
所谓竞品分析,就是在找到的这些案例中,分析他们之间哪个案例的把一部分做的好,他们的优缺点是什么,往深了考虑就是要考虑到你自己要做的系统与你找的案例之间的共性与特性,如禅道可以有一个项目的建立与任务的流转,这一点是我们这个文档流程管理系统要学习的地方,那么除此之外我们的系统还可以在他的基础上有哪些创新?哪些是值得我们学习的,哪些是我们需要去超越的。
梳理功能:
竞品分析之后对这个系统需要有的功能都有一个比较具体的轮廓在心里了,此时需要用到第一部分所讲的需求分析方法去对这些功能进行梳理,功能流图和ER图可以学习一下。
最后对梳理的功能进行整理规范,加上对这个系统的一些介绍就可以输出需求规格说明书了。
总结
需求分析是一个比较复杂的过程,需要考虑到很多细节性的问题,并且在整个项目开发的过程中属于特别重要的一个环节。