细谈软件需求分析过程:提取、抽象、升华

软件的需求分析必须要有对原业务的一个深入了解、提取、抽象、升华的过程,管理软件需求分析尤其如此。

软件的需求分析是从用户的业务中提取出软件系统能够帮助用户解决的业务问题,通过对用户业务问题的分析,规划出我们的软件产品。这个步骤是对用户业务需求的一个升华,是一个把用户业务管理流程优化,转化为软件产品,从而提升管理而实现的质的飞跃,这一步是否成功,直接关系到开发出来的软件产品能否得到用户认可,顺利交付给客户,客户能否真正运用我们的产品帮助他解决业务或管理问题。

按照软件工程对软件开发过程的描述,需求阶段我们可以细分为需求调研和需求分析两个小阶段,需求调研需要充分细致的了解客户目标,用户业务内容、流程等,这是一个对需求的采集过程,是进行需求分析的基础准备。当我们已经了解、理解了用户的业务,于是可以开始分析需求了。软件系统的需求分析可以由产品工程师或系统分析员或两者分阶段合作完成全部的需求分析工作。

一、 提取出核心、主要、急迫的业务,明晰业务流程

通过需求调研,我们会发现用户各方面的业务很多,从大处着眼,包括用户的各种业务项目、业务流程,再明细到业务过程的每一个单据,每一条记录,如生产过程中每一个环节的记录,办公中的每一个通知,甚至包括文件报刊的收发,计划生育指标统计等等。如此繁杂的各类业务,我们从何下手?这时需要我们回头去查看软件的项目规格说明书,再次温故客户对软件项目或产品的最初提出的需求目标和范围,我们的软件主要是为用户解决什么样的问题。从众多的业务中提取出用户核心的、主要的、急需的业务,这些是我们软件需求主要关心所在。写一篇文章需要重点突出,主次分明,我以为规划一个软件产品也是同理。

从用户繁杂的业务中进行业务、业务流程的提取,把那些分布在各个部门的同一种业务提取出来。比如物资的管理,涉及到生产部门的需用计划,汇总到物资部门的采购计划,计划的审批,采购合同,物资采购,物资部门的收发存业务,生产部门的物资领用消耗等等,我门需要分析用户的这个业务流程中哪些是系统能帮助管理的,哪些是要在系统外处理的,充分分析了用户现有的业务和业务流程,我们进入下一步骤。

二、 运用管理思想,优化业务流程

我们提供的是管理软件产品,要帮助用户解决的是管理问题,那么用户是这样的业务流程,就需要我们分析这样的流程合理吗,还有缺陷吗,怎样做能提高效率、解决问题,可以运用更先进的管理思想吗……。一般情况下,我们需要从两个方面考虑业务流程的优化。一是我们采用了网络计算机这些新的技术手段,较之原先手工、电话等方式在信息的传递、信息的共享、数据的处理等方面将会带来新的方式,必将改变原有的业务流程。另一方面就是我们根据对用户业务的理解,考虑是否可以运用先进的管理思想,比如MRPII、ERP、SCM、CRM、JIT、EIA、E-Business等等管理模型,进行现有业务流程的重组或优化。当然一旦牵涉到业务流程的修改一定要与客户的中高层管理者进行充分的沟通,只有客户认同方可确定,因为这一定会在软件实施时需要相应的管理制度配套执行。

三、 进行业务分类,规划系统蓝图

以上都明确了以后,我们可以描绘系统蓝图了。系统有几个子系统,每个子系统有哪些模块,各个模块处理哪些业务,很重要的一点还有各子系统模块之间的数据接口关系,基础数据从哪里进入,通过哪些处理生成哪些结果等等。这个过程需要整理、抽象用户业务,规划软件实现,规划软件系统模块间的逻辑关系。因为系统的页面实现是按照系统模块的规划,所以应尽量采用用户易理解、熟悉的方式、词语进行模块的描述。例如ERP系统中的物资管理子系统,首先明确这个子系统是ERP系统中进行物资相关的业务处理系统,同时它为主生产系统、成本管理子系统提供生产物资供应、领用消耗核算等的数据支持。因此在规划子系统模块时,按照业务过程模型,应包含物资需用计划、物资采购计划、出入库管理、库存管理等主要业务模块,再考虑软件运行必须的初始数据设置,增加一个基础信息维护模块(包括物资大类、物资编码等信息维护),还有考虑到不同用户对此系统的不同需求,如更多的生产人员、管理人员的需求,再单独增加一个综合查询和分析模块。另外还有与物资采购相关的业务如采购合同,可以放到合同管理子系统统一考虑,这里只做查询。这样规划出了软件系统对物资管理业务的处理,检查一下是否包含了物资管理中所有核心、主要的业务,这时我们发现还有比如物资采购、验收、盘库等业务还是需要物资管理业务人员来完成,系统可以做到的就是记录结果。软件系统是管理的辅助系统,不能完全代替人的所有工作。管理软件再加上管理制度、业务人员的操作才构成一套完整的管理体系。

四、 详细描述软件功能点

规划出了软件的功能模块,只是软件的功能框架结构,下一步就需要明确描述每个模块的具体内容了。包含什么内容、能做什么操作,每一个功能点的说明、优先级、业务规则、详细功能描述等等。这些也是软件需求规格必须描述的内容。

需求分析的表现方式,我们现在采用需求规格文档,UML语言描述的用例图、类图、活动图,还有实体关系图、界面原型等等,从不同角度、不同需求描述规划出的软件全貌。

五、 需求分析的质量控制

软件需求分析直接关系到软件产品的方向,所以需求分析的质量至关重要。对于这个关键点的质量控制,则可以通过内部评审和同行评审的方式,然后是客户方的评审。项目组内部评审或同行评审主要是根据公司规范和评审人员本身的经验对需求分析中不明确、不合理、不符合逻辑、不符合规范的地方予以指正。而客户的评审主要是对描述的软件实现是否真正符合他们的需求,能否帮助他们解决问题等方面作出评定。

软件的需求分析必须要有对原业务的一个深入了解、提取、抽象、升华的过程,管理软件需求分析尤其如此。

Contributors: FHL