【技术前沿】要什么:软件的需求分析
作者:研发部 薛卫鹏
所谓需求,从字面上理解就是需要和要求,这个词对于IT人来说是再熟悉不过,但如何在项目开发周期中作需求,对于不同的公司就有了不同公司的方法和技术。
对于软件开发来讲,需求的概念就是功能+质量+约束。在整个开发周期中,需求是整个开发的基础,成功的需求分析会使得软件风险减少一半。在需求的操作中,主要分为三个阶段:第一阶段,确定项目的大背景;第二阶段,项目本阶段的核心需求定义和确定;第三阶段,项目详细需求分析。下面我就根据最近我参与的一个项目进行叙述。
第一阶段,确定项目的大背景。
确定项目的大背景,就是充分的了解项目的领域,客户对项目的期望值。由于我公司从事于工控领域,并且拥有自己的产品:世纪星组态软件,拥有一些组态软件方面的技术和优势,所以我公司所接的项目也基本上围绕着工控领域,这包括驱动,通信等等方面。
第二阶段,项目本阶段的核心需求定义和确定。
在确定了需求的大背景下,下一步,我们需要做的内容就是确定项目的核心功能,关键的质量和相关的约束。下表是一个二维需求表:
表 1
功能:
软件功能又分关键功能,次要功能等。在第二阶段,我们要做的就是分辨并整理关键功能,和次要功能。根据项目的规划,找出当前需要实现的关键功能,与此同时,对于高风险,技术风险大的功能,或者关键功能中相互冲突的功能进行前期取舍。
确定关键功能这个过程是不停递归的一个过程。
质量:
一般质量分类包含性能,安全性,可靠性,易用性,可扩展,可维护,可移植等。
在需求分析中,和关键功能一样,要根据项目的愿景,进行关键质量的筛选。
在某种情况下,软件的质量之间还是有冲突的,比如可维护性和性能是对立的两兄弟。我们还需要对这样的关键质量进行必要的取舍。要做出这样的取舍,依据的标准就来源于我们需求的第一阶段的工作。
约束:
软件的约束分好多的角度。
业务级约束:举例:项目的组织结构和人员信息来源于企业人事系统。
用户级约束:举例:使用客户用一部分是残障人事等,其包含了藏语用户等。
开发级约束:举例:开发人员的技术水平等。
在调研并完成这样的二维需求表后,及时的和客户沟通,确定关键功能,关键质量和约束等。对二维需求表中的内容进行取舍和确定。
在第二阶段出的配置项二维需求表。
就拿我公司现在为国外一个公司所做的小型组态软件为例,对方只是要求了基本的功能,对如何实现这样的功能,以及软件的质量都没有提出明确的要求,从这样的角度出发,再结合二维需求表,可以得出这样的结论:只有功能需求而没有质量和约束的需求是不完整的,事实上也已经证实了这一点。由于当时并没有写明如何实现功能,对方公司现在提出种种要求让我公司来修改已经做好的软件,事实上对方公司所要求的功能全部都已经实现,但是对于控制功能的方式没有说明,以至于现在的软件改来改去还没有达成一致,仅修改软件与对方沟通需求的时间已经超出了开发周期,大大增加了软件的开发周期,这显然不是我们希望看到的。
第三阶段,项目详细需求分析。
在第二阶段的基础上,我们就可以对项目核心功能进行数据流需求调研分析,业务逻辑分析。并在这基础上编写用户用例,数据流转图,业务逻辑图等。
在完成了以上业务核心功能的详细调研分析后,将全部用例和其他内容组合在一起,制定《项目需求规格说明书》。
在第三阶段出的配置项《项目需求规格说明书》。
我公司在工控行业的深厚资历让我们对自己的产品拥有绝对自信,因此有些时候在对自身产品进行升级提高的时候容易忽略对其需求的详细分析与确定,才会发生已成型软件再次被修改的情况。
由以上分析并结合我公司实际遇到的情况,可以得出结论,在做需求分析的时候一定要做到详细,详细到每一个细节,并与客户达成一致,这样才会做出更加完美出色的软件产品。■