论软件需求分析方法和工具的选用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
论软件需求分析方法和工具的选用
【摘要】
本文以某知名饮料公司的信息系统项目的开发为背景,讨论了一个电子商务信息系统需求分析的整个过程,其重要特征是:所涉及的项目是原有系统的一个升级替换版本。因此,需求分析过程不同于建立一个全新的系统,大体上可分为三个阶段:第一阶段实施逆向工程获得对系统的初步了解;第二阶段在第一阶段的基础上写出基本需求,交由客户评审补充;第三阶段在第二阶段的基础上开发原型,利用原型与客户交流,最终获得基线需求。针对上述三个阶段,本文论述了所使用的分析方法与工具以及所遇到过的一些典型问题和措施,最后我认为,在需求分析中工具方法都只是辅助项目成功的因素,真正的决定因素还是—
一“与客户的沟通”。
。
【正文】
我于2005年1月至2006年1月参加了某个知名饮料集团公司的企业信息系统的开发工作,该大型集团的业务主要涉及到奶制品的进销存。本人在项目中负责系统分析,设计和部分测试与系统实施的工作,该集团企业原先已委托某个软件公司开发过一套产品进销存管理系统,原系统采用PB6.5开发,数据库采用SYBASE,服务器采用Windows2000Server,客户端采用Windows 98,程序架构采用的是传统的C/S结构。但是该老系统存在两个主要的问题:(一)系统运行速度非常慢,如商品销售开单时,从确定开单到开单完成有时需要1~2分钟左右的响应时间,让客户无法忍受。(二)系统数据不准确,经常出现实物库存与电脑库存严重不相匹配的情况,使销售数据的统计产生一些混乱,有关财务的数据因此无法有效使用,只能采用人工录入方式补充进行。在这种情况下,该集团的总经理决定参考原有系统重新开发一个系统,以便解决原系统所存在的上述两个难以克服的难题。
鉴于该集团业务操作复杂,流程多,涉及人员多等特点,以及项目完成时间短,经费有限,人员有限等限制约束条件,再考虑到必须避免前一系统出现过的结构混乱与难于维护等问题,我们采用逆向工程进行对对原系统的需求做一个比较彻底的和切实可行的分析,由于原有系统已经开发了近三年,并且客户也有了一定的信息化应用经验,业务基本流程本身也并没有太大的变化,因此,我们把需求分析的过程分为三步:第一步采用逆向工程工具BPWIN分析原有系统的结构,主要是数据库结构和程序结构;第二步在获得第一步结果的基础上写出基本需求,交由客户评审补充;第三步在第二步的基础上开发。原型,利用此原型与客户交流,从而获得最终可用的需求结果。下面按上述三步分别加以论述。
第一步是实施逆向工程,获取原有系统的基本需求。由于原有系统在功能上大体上能基本满足客户的需求,并且在两年多的开发中也积累了不少经验,因此,从中可以获得一些有益的参考,也可以避免多走弯路。在这一阶段,我们采用的主要工具是ERWIN和BPWIN;前者主要用来分析数据库结构,后者主要用来分析程序结构,便于开发人员与高级用户理解程序。采用这两个工具的原因是:原系统过于庞大,模块多,数据库模式多,表格量很大,仅靠人工的方法很难从中获得一个比较完整的、明确的系统结构以及整体构成,而且原有系统未能提供一套正确完整有效的设计文档,于是我们只能依靠工具辅助来进行。在使用ERWIN分析数据库,并且用BPWIN分析原程序中的处理流程图以后,我们对原系统的结构有了一个初步的了解,再结合对原系统的使用,基本明确了功能与流程的需求,并在此基础上用人工录入方式,产生了初步需求的自然语言文档。
第二步是在第一步的基础上进行的,即写出系统基本需求,交由客户评审和补充。通过第一步的逆向工程,我们获得了系统的基本需求。为了充分记录需求的变化及需求之间的依赖关系,我们决定选用IBM 公司的Rational Requisite PRO作为我们的需求管理工具,IBM公司有一整套用于需求管理的工具,功能非常强大,包括Rational Requisite Pro、Rational Clear Quest变更管理工具等等,这些需求分析工具可以对需求进行全面的管理,包括记录需求的变化情况,需求之间的依赖关系等等。但是,我们考虑到Rational的一套工具全面实施会非常昂贵与复杂,需要非常强的项目管理能力才能全面实施,因此,
我们只采用了其中简单的一部分需求管理工具,那就是需求管理工具Rational Requisite Pro和Rational Clear Quest变更管理工具,记录需求之间的依赖关系,其他跟RUP有关的功能都给略去了。之所以这样做,主要是考虑到项目的经费、人力以及国内软件开发的实际情况。正如前面所说,我们根据自己的理解并写出基本需求后,交由客户做评审井做适当补充,我们将经过补充整理后的需求作为正式需求记录入Requisite Pro所维护的数据库中,并对各个需求进行分类,设定优先级等,这些工作完成后,就可以从数据库中直观地了解客户到现在为止提出了哪些需求,哪些需求是必须优先考虑的,哪些是难度较大的等等。在这个过程中,我们遇到了一些问题,譬如:用户对我们用自然语言书写的需求文档有许多地方不理解,往往在花了较长时间阅读之后,仍不明白我们所描写的需求过程与他们所完成的业务之间的对应关系;另外是由于首次采用Requisite Pro进行需求管理,在类型划分,属性值的确定上,部分开发人员没有经验,造成了不少反复,对于前者,我们的方法是想办法增加一些示意图,将大的流程分解为小流程,再与客户反复交流与沟通,最终达到双方理解一致的目的。对第二个问题,则参考了一些例子,再结合实际中属性的使用情况,给予取舍或者选择,经过这一阶段的工作,我们建立了基本的需求库,定出了基本需求规格说明。
第三步则是在第二步的基础上建立起原型,利用原型与客户进行更深入的交流,通过交流修改相应的需求。在这一阶段的工作是在对第二步任务进行报告交流的基础上进行的。我们用Eclipse开发了一个原型系统,就具体该企业的进销存的业务流程与客户进行交流与沟通,通过原型,客户发现了许多我们与他们的理解相互不协调的地方,我们在修改需求的同时,也在Requisite Pro需求数据库中记录下修改的历史。事实证明,这种记录历史的作用是很有效的,如曾经有该公司业务员在两个不同的时间对同一需求提了相反的需求,我们根据历史记录很快证实了该业务员的提法有错误,在事实面前无需再作争论,同时利用Requisite Pro,我们还发现了一些需求相互之间有矛盾。经过这一阶段工作,我们终于获得了经过用户认可的需求基线,即是可用于下一步进行详细设计的基线需求。
在这个项目中,我们利用了BPWIN、ERWIN等逆向工程分析工具和Requisite Pro需求管理、Rational Clear Quest变更管理工具等等,这些工具的使用,使我们提高了工作效率,起到了一定的辅助作用。IBM公司Rational 系列的一整套需求分析工具,其功能是非常强大的,国外已在普遍地使用,在国内也逐渐开始普及,现在很多那些通过CMM二级以上评审的单位,都是使用工具对需求进行管理。在本项目中,我们仅仅利用了Requisite Pro功能的一些小方面,已经体会到该工具对于项目管理的诸多好处。通过这次案例,我认为在软件的需求分析工作中,方法的重要性应远超过工具的使用,应当首先确定分析中的风险,把风险分类,用不同的方法去解决各类风险,而工具的选择不仅是要看影响力和名气,而是要真正为我所用,应把握其精髓,即是此工具到底可以对开发有什么帮助,而不是仅限于如何使用。我认为在需求分析中工具的作用不外乎两个:一是实际系统与环境模型等的抽象工具,二是需求表达工具。最后我还是总结一下,在需求分析中工具方法都只是辅助项目成功的因素,真正的决定因素还是—一“与客户的沟通”。