所有做过项目实施的技术人员都知道需求分析是项目实施中非常非常重要的环节。有很多项目失败究其原因主要是需求不明确,对用户的要求理解不明确造成的。

那么做需求的时候需要了解些什么呢?

      我的原则是:需求覆盖面要非常广泛,所有与项目有关的问题都要去了解,记住这里是做需求,还没有到需求分析的阶段。

具体来说有以下几个方面:

     使用人员:系统的终用户是谁,这个至关重要,因为你开发的80%以上的功能都是给这些人员用的,他们的意见和想法是及其重要的。其次是操作人员,维护人员。实际上项目实施过程所有和项目有关的人员,不管是客户方还是实施项目组的人员,都需要了解他们的情况,因为日后可能成为制约或影响项目成败的关键因素。

     软件环境:用户使用的是什么操作系统,常用软件有哪些,必须安装的软件有哪些,使用的主要浏览器是什么。曾经在项目实施中遇到过类似的经历,系统研发完成后才发现用户的服务器上有一个特殊必须要安装的软件与系统存在冲突,导致整个系统无法进行部署和上线运行。问题从上到下一直牵涉到底层,严重影响了项目顺利进行,所以前期对软件环境的了解一定要细心,开发的时候才能做到事半功倍。

硬件环境:服务器配置情况,客户机配置情况。

     网络环境:针对于系统日后运行的网络环境进行调研,确定系统是运行在内网,外网还是专网。了解清楚网络架构,因为系统功能不同,可能对网络吞吐量要求不同。之前实施过一个项目,系统上线后慢的不得了,想了好多优化系统的方法都没有解决,费了好大的劲才定位到是由于网络的原因,当时数据服务器之间的带宽是1Gbps,而数据服务器与应用服务器之间的带宽只有10Mbps,而我们的系统要求至少是100Mbps的带宽,系统上线后肯定慢,因为网速限制其数据读取速度。

     数据情况:现在很多应用项目都是针对业务应用定制的,那么肯定会使用到客户的业务数据,所以做需求时一定要摸清楚数据情况。数据完整性,正确性,可用性等,这些都会牵涉到后期数据入库,或者数据处理的时间。如果已经有数据库,那么数据库结构,数据字典等信息要了解到;如果是多系统对接,数据间的接口等问题都要了解清楚。其次还要分析数据的容错性等问题,还要特殊数据的处理问题,比如有没有超长字符,特殊符号,特殊数字,数据的编码字符集等情况。提前做足工作,开发时省去好多力气。否则,后期字符乱码,垃圾数据等问题会频频出现,影响系统正常运行。

     业务需求:系统要满足的核心业务是什么,主要解决什么问题,想带来什么样的效果,这几个问题是核心,也是今后项目功能开发的主轴线。在此基础上梳理好业务流程,根据业务流程设计业务模型,才能为后续设计做好充分准备。以前我们经常出现需求变更,开发时容易被用户左右,总是给系统打补丁是前期的业务需求没做好。如果能把握好这个主要矛盾,也是客户关心的核心业务,用这个系统想要解决的核心问题,抓住这个系统开发过程中其优先级始终都保持先,那么客户有变化增加需求时评估期是否属于核心业务范畴,是否符合核心业务流程。凡是不符合的功能,优先级一律靠后或者舍弃。这样才能保证项目顺利进行,才能保证项目成功。

    功能需求:实际上功能需求太具体了,很多项目实施时客户并没有什么具体功能和操作的概念,所以了解业务是核心,功能尽量是项目实施团队站在专业的角度替用户进行考虑和设计的。当然如果用户也是对软件系统比较了解又对其业务非常了解,那么此时用户比较关注的具体功能要详细的了解了。

    以上是做需求是需要了解的一些内容,那么了解了这些内容之后,需求调研人员可以基于这些基本情况进行需求场景模拟,也是说要构造故事场景,在场景中将以上内容结合起来形成一个完整的故事。这则故事包含了系统的应用场景和需求,下一步可以基于这些应用场景进行需求分析了。