论需求分析方法及应用
2019-09-10冯笑媚
冯笑媚
摘 要:为了响应绿色生产的号召,很多传统工业也开始注重生产的环境,如何让传统工业更好地走上节能环保之路,这是近几年来我们一直在探讨的问题,下面我将借此篇文章讲述我们进行需求分析的过程。本文以《绿色车间检测系统》项目为例讲述了需求分析方法的选择,及其应用的过程。在本文中首先介绍了需求分析的主要工作,然后讨论了选用面向对象方法的主要理由与策略,然后通过一个简单的案例说明该方法的使用过程、效果及其在软件需求分析各阶段所产生的可交付成果,再通过部分功能的需求分析来讨论使用其他方法来进行需求分析的好处及必要性,最后进行简要小结说明选用多种方法进行需求分析的意义及作用。
在项目开展期间,我担任了需求分析、系统设计等大量工作。
正文:
绿色车间检测系统是以车间为载体,融合自动控制技术、计算机技术、物联网技术,将生产设备控制、环境监控、信息管理等功能有机结合,通过对生产环境设备的集中管理,提供更具绿色、安全、节能的工作环境。需求获取完毕后,我们需要对需求进行分析,因为只有对需求进行正确的分析,才能设计出用户满意的系统。需求分析里我们需求解决一下问题:
根据获取的需求描述,解决绿色车间检测系统是做什么的;
如何让用户清楚需求,并与用户达成一致后签署需求规格说明书;
如何能够让开发人员理解,使其能够按照需求规格说明书的要求完成系统功能;
针对以上问题,经项目组的讨论,我们决定使用面向对象的方法作为本次项目需求分析的主要方法,下面介绍一下我们做软件需求分析的过程及各个阶段的可交付成果。
第一步了解系统业务结构,我们通过各种需求获取的技术从用户那获取了系统的需求,比如设备管理模块需要实时知道设备的状态,从而在生产过程中去控制和管理设备;用户管理模块需要知道员工的信息,根据员工的岗位来分配权限,使其有操作设备的权限;环境管理模块中,需要实时监控环境中的质量因素,从而根据空气质量来调整生产设备的使用情况,来控制生产等。用户的需求除了功能性需求外,还有非功能性的需求,如果单纯来用文字描述所有的需求,不但容易遗漏,而已不容易让用户看懂。鉴于此我们选择采用Rational Rose(基于UML)的用例图、类图及其他多种图来联合描述需求,确保需求没有遗漏。每当我们分析出一个图,我们都会向用户进行展示说明,让用户及时了解需求的详情,也可让用户及时提出对需求的修改意见,促使尽早地与用户达成需求一致的共同意识。
经过了解系统业务结构这一步后,我们能从宏观上把握用户的具体需求方向和趋势,了解现有的组织架构、业务流程、硬件环境、软件环境、现有的运行系统等等具体情况、客观的信息。同时在每个职能部门都安排好了本次项目的负责人,为接下来的需求分析工作建立起良好的沟通渠道和方式。经过一轮的了解及调研,我们编写了调查报告,分析了客户的组织业务概况和企业现状,为接下来的需求分析工作打下了基础。
第二步了解系统各个模块的业务流程,在这个阶段,我们需要把系统的各个模块的业务流程分析出来,也要让开发人员和用户看的明白。因此我们在上一阶段的基础上,跟踪了各个模块的业务流程,把各个业务流程根据需要使用状态图、活动图、序列图或者协作图来表示。每一个图完成,我们也会让用户和开发人员先看一下,有问题的及时也需求分析人员沟通,这样既可以让用户和开发人员明白我们的需求。然而我们以前的多个项目中,经常会出现开发人员做出来的系统功能,与用户想的功能是不一致,导致整个模块,甚至是整个系统的编码工作要重新编写或者要做大量的修改。这就是在系统的业务流程的需求分析时,没用让开发人员和用户的需求达成一致造成的,因此我们采用面向对象的方法进行分析,将每一个用例的业务流程都以图的形式展示出来,让用户和开发人员去确认,从而让开发人员尽早的理解和明白系统的业务流程,能够尽早的避免用户和开发人员的想法不一致导致开发的系统不符合需求的情况。面向对象的方法,使系统划分成一个个独立的对象,即使有一个对象不符合需求,也不会对其他的对象有很大的影响,从而减少了因需求变化而导致全盘皆否定的情况的出现。
在这一阶段,除了使用面向对象的分析方法外,我们针对调查报告,做了分析,即编写了调研分析报告,从分析报告中,把系统中涉及到的功能流程,做了说明;我们为了让系统的业务流程更合理、更准确、更便易、更符合用户的习惯,对于主要的业务流程,我们使用了原型demo展示给用户,让用户提前体验,并让用户用原型反馈报告告诉我们流程有什么问题,然后我们一起讨论,把不合理的流程与用户一起想出好的办法来解决,最后我们编写了业务流程报告来结束本阶段的工作。
第三步将业务数据变成软件数据,这一步实际上是收集车间中各个环节中需要用到的数据,以及这些数据是如何转换的,为了清楚的现实各个环节的数据变动,我们选择使用DFD图(数据流图)来展示。为了更清楚的展示系统中数据之间的关系,我们采用面向对象的方法,将所需的数据看做成一个实体,各个部门之间的关系,其实就是数据之间的关系,也就是实体与实体之间的关系,在UML中我们可以使用构件图来表示。构件之间有组装、分类和相连关系,反应了现实世界中的业务数据之间的关系,比如车床信息与设备信息就是组装关系,这也反应用面向对象的分析中的类、继承和封装等概念,能更好地反映出系统的业务数据关系,同时也为数据库的概念模型设计奠定了基础,避免了设计与需求分析不一致的情况,从而促进系统的实现进程。
在这个阶段是需求细化和確认,即进行具体的流程细化、数据项的确认阶段,我们为用户提供原型系统和明确的业务流程报告、数据项表,并能清晰地向用户描述系统的业务流设计目标,用户对我们提交的报告、文档都签字确认了。
经过以上三个步骤,我们基本可以解决上面的三个问题,也能够把需求规格说明书生成出来,并且能促进用户和开发人员对需求的理解和确认,从而确保系统的正确性。系统开发出来后也受到用户的认可。由于有高质量的需求规格说明书,后续的设计与维护工作,我们感觉轻松多了。
使用面向对象的分析方法,可以将系统划分成一个个细小的功能,把问题细化便于解决,但也有不好的地方,就是很难把握到系统根抽象的度,也就是功能的边界不好把握,把握不好,系统的划分就好很凌乱,导致后面的设计及实现工作难以开展。因此我们还可以使用其他的方法来辅助我们进行需求分析,比如结构化分析方法。在做系统业务流程时,我们就用到了结构化分析方法来分析,得出了系统的数据流图,使我们的系统业务流程及数据关系更加清楚和细化,系统的结构也更加清晰和明显。
鉴于以上的经历,我们觉得需求分析是系统开发成功与否的关键步骤,因此要根据系统的需求情况、项目的大小等情况来综合选择需求分析的方法。为了保证需求分析的正确性和完整性,我们可以综合多种分析方法,及使用多种工具来帮助需求分析的实现。