一、需求工程的意义
在软件工程领域,需求工程研究是一个非常重要的课题。需求工程的目的是通过与用户的广泛交流确定应用系统的目标。需求活动以工程化的方法被提出、分析和组织,鼓励用户以一种积极的方式参与需求分析活动中,并在整个软件生命周期强调用户参与和领域专家的指导作用,促使目标系统更大限度地满足用户需求。通过分析与挖掘每一需求层次的内容,促使需求明确化,从而更好地实施企业ERP系统。
为适应企业信息化的推进、管理思想的变革以及企业自身未来发展的需要,很多企业都开始实施ERP系统。然而,系统最终得以顺利实施并发挥良好作用的较少,也即失败者较多。究其原因,一些学者认为,主要是忽视软件开发前期的需求分析,开发过程缺乏统一的、规范化的方法论的指导,文档资料不齐全、不准确,忽视用户之间、开发组人员之间的有效交流及测试的重要性等。结合多年的实践经验,笔者认为,主要是前期的需求分析没有做到位,需求功能没有完全实现。众所周知,企业在开发信息系统(ERP)时,其中一个重要的步骤和环节就是需求分析。需求分析是需求工程的核心,关乎整个系统的成败,意义重大。为此,我们在进行系统开发的时候,一定要把需求分析做扎实,要反复不断地进行需求定义、记录、描述和升华需求层次,充分考虑用户的需求,相互配合,形成规范的、齐全的需求文档。
企业ERP系统的实施,是一个系统工程。对一个企业或者企业簇群来讲,ERP不是一个工具或辅助手段,而是一个动态的过程,它以现代信息技术为依托或支撑,不断地融入企业的管理思想和理念,本身是信息技术与企业管理思想的融合。基于这样的考虑,很多企业的ERP系统往往也就有了企业个性化的一些特征,这也就决定了企业ERP系统的实施不能仅靠简单的软件系统的复制来实现。为此,在实施企业ERP系统的时候,必须从需求工程着手,注重用户的参与交流,做好需求分析,明确需求功能,最终提炼出符合问题解决领域的用户需求。
二、对需求工程的要求
1、完整性
完整性包含系统需求分析文档的完整性和系统完整性的实现两个方面。通过前期的需求调研与访谈,在了解用户需求的基础上,最终形成需求分析文档,此文档一定要注意其完整性。首先,ERP系统是一个系统工程,作为一个系统,只有各个部分齐全并能相互切、调地发挥作用,才能体现出整体效用。如果系统不完整,那么该系统就不能正常地运行。其次,无论做什么事情,都要有阶段性,ERP的实施也下例外。所有内容不可能全部呈现,有的部分现在可以呈现出来,有的部分则要根据今后的发展需要加以完善和呈现。对于这样的子系统,在文档中要用“待确定”字样标识出来,以便于区分,也为了更好地体现系统的完整性。最后,从系统论的观点来看,系统内各个组件只有协同作战,才能更好地提高企业信息化水平,提高企业的经济与社会效益。
2、无二义性
针对最终形成的需求分析文档,表达和描述用户需求的时候,措词与文字一定要严谨,出现的所有语言以及符号表示都要有明确的含义,不能出现模棱两可,含混不清的语言和符号。为此,我们试图引入符号学的方法。事实证明,符号学在需求工程中的应用,尤其是在需求表达和获取上非常有效。
最终形成的文档,无论是低层操作员工还是高层管理人员应该都能看明白,而且看完之后,大家的看法或者理解是一致的,因此用词一定要简明、准确。那么,如何做到无二义性呢?一是取决于系统分析员本身的素质与知识层次以及责任心。系统分析员在进行需求分析的时候应按照用户的观点来进行,而根据以往的经验,分析员也下必完全遵从用户,便于系统的实用,可以融入自己的一些观点。二是要对文档进行多方多次审查,包括自己审查、对方审查、专家审查,从审查中汲取有益的看法,从而修正相应的文档内容。此外,从技术手段上,可以编写一些用例或设计出一些原型,做到早期防范,也可以适当参考笔者与他人合作总结的需求分析法,即3个循环,4个步骤。
3、可修改性
最终形成的需求文档,不是成不变的、固定的,而是随着修改意见以及需求本身的变化及时进行调整。从开始做需求分析时,就应考虑到需求文档可修改的特性。同时,为了避免修改文档涉及的内容过多,应该考虑到各个模块之间的独立性。对于一个大的系统而言,各个模块之间,保持较高的独立性,能为系统的后期维护带来很大的便利。这个独立性不是本身就存在的,而是靠系统分析员根据调研、提炼需求来界定的。子系统(模块)的划分应尽量合理,使其关联性合理化、最小化。为此,系统分析员要本着对人、对系统高度负责的态度,思考模块的独立性,明确系统边界。
4、可跟踪性(即回溯性)
在系统开发的整个生命周期中,用户需求的可追踪性发挥着非常重要的作用,可以帮助开发人员理解需求,便子对需求的管理,避免因系统质量降低而重新修改,从而减少项目的开发费用与开发时间。
企业实施ERP系统,是一个严肃而又严谨的事情。对于任何系统最终都需要进行验证。而ERP系统本身具有快速验证功能,能够进行快速的回溯追踪,具有很强的可跟踪性。因为前面的需求分析一旦完成,随即进入实践编程阶段,并立即跟踪到前面分析文档的内容。如果系统分析员工作不认真,分析下透彻,考虑问题不周全,责任心不强,在后面设计实现时均能反映出来。
另外,为了更好地实现系统的可跟踪性,系统分析人员一定要把文档的前后对应关系标识清楚,以便逆向反馈查找。各种标识以及后面的模块要对应,并标记清楚每个DFD(数据流程图)、模块、模块与界面的相互对应关系。
5、文档一致性
企业实施ERP的过程中,积累的文档比较多,所以文档一致性范围比较广,包含过程文档、通讯文档、最终文档等,我们要求所有文档都具有一致性,整个系统的文档格式标准统一、代码设计一致、批次文档一致。
三、实践与建议
结合长期的实践经验,笔者在此提出做好需求工作的几点建议。
1、跟班劳动。系统分析人员应跟班工作,实地调查,了解各个部门的运作、生产与规划。亲自参与实践劳动,明确企业的业务流程,这是做好企业需求工程的最重要一步。譬如,我们曾经为某公司设计ERP系统,其生产计划排产比较复杂。于是我们通过跟班劳动,现场体验生产排产的过程,最终设计出合理、优化的排产算法与原理。
2、查阅公司原有的文档,了解现状。系统分析人员首先应分析以往的文档,这个环节非常重要。企业信息系统的建设是基于企业的现实需求而开展的,因此必须准确掌握用户的真实意图,如用户对时间、对安全性的需求等。
3、周密考虑。系统分析员应周密地考虑问题,无论是进行前台的应用程序设计,还是进行后台的数据库设计,都应该考虑到扩展与复用的问题。进行应用程序设计时,要考虑代码的质量以及软系统复用;进行数据库设计时,要选择合适的数据库,同时注意各个数据库表之间的联系,设置相应的字段长度,避免由于数据量的增加而导致系统无法实现原来的功能。
4、培训员工,提高素质。用户需求有时可能是隐性的,而且是不断变化、发展的,这就要求分析人员具有高度的责任心和勤奋精神。因此,企业要不断提高分析人员的素质,并加大培训力度,使他们对ERP有更深入的认识,以更好地投入需求分析工作,避免由于需求不匹配而产生不必要的问题。 |