【摘要】
本文以某通信公司的业务报表系统开发为例,讨论了软件需求分析工具与方法的选用。我们认为,软件需求分析是软件工程中重要的一步,直接关系到后继工程的进行以及最终的产品能否满足用户的需求,因此在整个工程中起着关键性的作用。采用适当的工具,有可能显著减少需求阶段的错误,也可大幅度提高需求分析的质量和工作效率。当然工具的选用应当与实际的项目相结合,充分地发挥工具的作用。本文结合我们工作的实际经历,简要讨论了开发系统时所选用的工具及其应用,选用时所考虑的原则以及所碰到的问题。在文中也结合多种开发方法(即传统的瀑布法、信息工程法、面向对象的方法)的比较,指出各种方法的不足之处,说明我们所采用的工具对软件需求分析所起的作用,以及相应产生的效果。
【正文】
我在某市一家通信公司工作,作为一名技术骨于,受领导委托,参与了开发本公司的业务报表系统,我担任系统的需求分析、总体设计和部分代码的编写工作。
我所在的企业作为一家通信运营公司,分为总部、省级公司和地市级分公司三级,各级公司之间都有数据报表的要求。但是,每一个地市分公司因所处的地方不同,经营环境不同,所面临的问题也不一样,因此形成了各具特色的数据报表(除地市分公司向省公司汇报的之外)。公司又分设了许多部门,这些部门也都会需要数据,作为分析决策的依据。因此,了解各个部门的需求就成了业务报表系统的关键。
在调研的过程中,我选用了一种工具叫Play CASE,可以从网上免费下载,有很强的功能。下面就介绍一下,在需求分析阶段,我是如何使用这一工具的。
第一步,了解业务组织结构。公司内部的数据实际上是在部门之间流动的。业务部门需要知道在本地覆盖区内各基站的话务量、当天的话务量(即话务量的时空分布)。财务部门需要知道本月各类用户的话费收入、预交款收入、与其他电信运营商的网间结算等。计划部门需要各部门的分析数据。计费部门需要提供本月的账革统计数据、话单统计数据分布(比如分别按照基站分布、时段分布以及按用户类别分布)、预交款统计数据、当前的欠费总额分布、催缴情况等等。这些部门时常为了数据而产生了大量无谓的争议。在使用Play CASE工具时,先要将这些部门录入到Play CASE的“业务部门”中.构成了一个信息源的接收点(或发送点);而Play CASE通过图示表示了这些部门的关系,并转换成了相应的软件结构。实际上,这是一种系统建模的方法,即把业务系统中的各个组织转变为软件功能中的各个结构。这样,在需求分析阶段,明确哪些部门需要数据,从而保证了需求分析对整个公司的全面性,而不会忽略掉某一个部门,导致需求分析的不完整。
第二步,了解各个业务部门中的业务流程,使之通过Play CASE转换成软件的运行过程,这是一种动态建模的方法。在上一步的基础上,追踪各个部门的行为,录入到Play CASE中,并以形式化的语言描述各过程。对于复杂的过程,该工具还提供了进一步细化的方法,并且形成了业务流程图和业务状态图。根据这些流程图、状态图与实际业务部门的业务相结合比较,还是较为吻合的。在此步的实施过程中,运用了动态建模技术,使各部门业务流程的情况在软件的运行过程反映出来,从而保证了需求分析阶段中运行过程的描述能真实地反映实际情况,防止在后继的程序编写过程中,可能会经常发生的一类情况:程序员因为没有理解业务流程而出现“闭门造车”的现象,从软件的功能角度上保证了软件的正确性。
第三步,将业务数据转变为软件数据,这一步工作实际上就是收集各部门所需要的数据。分析各部门需要的数据都有哪些;以及数据是如何转换的,这可以归入“功能建模”的范畴。将这些相应数据录入到Play CASE中,选定所属的部门。这时就自动地建立了DFD图(数据流程图),数据字典,省去了人工建立时的很大麻烦。
第四步,将业务上的数据关系转变成软件中的数据关系。这里采用了面向对象的方法,把业务部门所需要的数据看作一个实体,部门间的数据关系就是实体之间的关系。比如:经营部门所需要的用户资料、用户话费,实际上就是用户这一实体与账单这一实体间的关系。Play CASE提供了构件(不过我觉得是部件更为合适一些),来表示对应的数据,并提供了三种构件的表示关系即组装关系、分类关系与相连关系。这三类关系基本上反映出了现实世界中的业务数据之间的关系。例如现实世界中的用户资料与用户话费,在Play CASE中,可将用户构件与账单构件用相连关系表示。这种方法,实际上是借鉴了OOA面向对象的分析方法中的类、聚集、继承、封装等概念,能较好地反映出现实中的业务;同时,这一步的工作也为总体设计中数据库的概念模式设计奠定了很好的基础。
经历了上述四个步骤以后,利用Play CASE工具自动生成了软件需求规格说明书、初步的DFD图和业务流程图,为下一步的总体设计打好了基础。
使用Play CASE工具,使需求分析既能继承传统的结构化分析方法,又能吸收面向对象设计方法的优点。比如能把业务流程转变成为运行过程,业务组织转变成了软件的结构等都体现了这一点。而在运行过程中,对复杂过程的细分以及追踪则反映了传统方法中的自上到下分解的分析思想,这对于解决复杂系统的分析是很有帮助的。
通过使用,我觉得这个工具还是很不错的。因为它实际将以下四个方面的问题结合起来了:软件、业务、开发人员和用户。对于用户而言,Play CASE用图形化的方式显示出业务流程,使用户了解业务在软件中的运行过程,提供了将来验收软件时的依据。对于开发人员来说,使开发人员能更清楚地了解业务流程,不会再发生“因为不理解用户的需求而出现的闭门造车情况,从而导致开发出来的产品不符合用户需要”的现象。因此,Play CASE所自动提供的需求说明书能够很好地沟通用户与开发人员之间的理解,使他们都能对需求有共同的理解。
使用Play CASE工具后,使我们的需求分析取得了很好的效果,不但能自动地提供许多结果,如需求说明书等;还使需求的质量有了很大的提高,受到领导的赞扬(领导不是学计算机的,但对公司的业务十分熟悉);在后继的设计与维护工作中,我们感到工作似乎轻松了很多。
当然,该软件工具也有不足之处,一个突出问题是灵活性不够,一县公司的部门或者组织机构发生变化时,整个设计都要重新来过。因此,在改进的过程中,我们在第一步过程预留了好多个虚拟的部门,以备将来进一步的扩充或者变动。
评注:(1)具体项目有些体会,完成情况似乎不错。(2)条理较清晰,比较系统地描述了使用Play CASE的过程和体会。(3)偏重于工具的讨论,对需求分析的方法分析还嫌不够。(4)项目相对较小,仅涉及报表系统,对更为复杂的业务流程应举例分析,才能更充分地体现方法与工具的作用。(本文主要参考了广东魏福建等人的论文)