林 杰(博士生导师),黄 妍
基于生命周期法的信息系统开发过程管理审计
林 杰(博士生导师),黄 妍
采用生命周期法进行信息系统开发在降低开发过程复杂性的同时,由于其线性特点使得风险影响程度加剧,因此对系统开发过程管理提出了挑战。为了及时觉察开发过程中的潜在问题,规范开发过程管理流程,在对生命周期各个阶段的具体内容和特点进行深入研究的基础上,划分审计六阶段并基于各个阶段管控情况提出关键审计节点,列出主要的审计内容,试图在此基础上指导信息系统审计师展开全面审计,从而形成较为完整的信息系统开发过程管理审计框架。
信息系统审计;信息系统开发过程管理;生命周期法;风险审计与控制
随着近年来信息产业的快速发展,软件项目规模和所涉及的领域不断扩大,相关公司对软件开发投入的成本也日益增加,但是往往效果不尽人意。Standish Group近4年的调查数据显示,信息系统开发项目失败率在20%左右,风险项目的占比均超过50%。在分析和总结研究项目失败的原因中发现,信息系统开发失败大多是疏于对开发过程中各阶段工作的合理规划和有效监督。因此,引入对信息系统开发过程管理的审计显得尤为必要。
信息系统开发过程管理审计是由独立的审计组织开展的,对于信息系统开发过程管理中各阶段各步骤的正规且值得信任的评估,属于信息系统审计的一部分。20世纪60年代,信息系统审计的理念在美国最先提出,随着信息技术的发展,信息系统审计越来越受到重视,尤其是2001年美国安然和安达信事件,直接导致了2002年萨班斯—奥克斯利法案的诞生,这一法案为信息系统审计提供了法律依据(刘松林,2009)。多年来,发达国家已在信息系统审计领域做了大量的理论研究和实际工作。国际组织ISACA(信息系统审计与控制协会)已经制定了国际通用的信息技术审计标准——COBIT,建立了信息系统的控制体系。审计人员依据这个控制体系,对信息系统的管理、运行和应用情况进行审计。
尽管COBIT已经成为国际上对信息和信息资源进行控制的事实标准,但COBIT忽略了系统分析与系统设计两个关键阶段,忽略了信息系统开发与运行过程中的一些技术管理问题。本文在参考国内外信息系统审计相关理论的基础上,着重研究采用生命周期法的信息系统开发过程管理的审计,结合生命周期各阶段的内容和特点,提出关键的审计要点,以便有效监督系统开发过程的管理和执行情况,确认风险项和问题项,有针对性地指导开发团队及时调整和改善,以提高项目管理能力。
信息技术的兴起和企业对核心竞争力的追求推动了信息技术在数据处理、存储和交换等方面的广泛应用,信息系统已经渗透到社会生活的方方面面。根据Gartner的统计,中国近几年在IT方面的支出保持着增长趋势,从2014年起年均复合增长率为3.3%。作为IT支出一部分的企业软件支出也在2016年保持着良好的增长态势。据统计,2016年中国企业管理软件市场规模超过200亿元,预测这一数字将逐年增长。如此大规模的信息化建设,一旦缺乏审计,缺乏对项目管理的有效制约,将不可避免地出现项目失败或风险爆发的问题。
通过对风险项目的分析统计,本文总结出信息系统开发失败集中表现在以下几个方面:①无法满足用户实际业务需求,导致在交付后实际使用较少,用户仍依赖于之前的工作方式和工具,甚至有些系统因此被废弃;②系统程序存在漏洞,严重者为系统数据不准确、不完整,影响业务流程,轻者为用户操作体验不佳,误操作频繁,导致系统运维成本太高;③项目管理不到位,项目成本超过预算并严重拖期,开发过程中甚至出现局部大面积返工重来的情况;④系统框架结构及功能设计禁锢在之前的业务流程和组织结构中,没有对现行管理方法是否适应新时代信息化管理要求进行专业分析,导致信息系统的价值不能真正得到体现,甚至局限了组织今后的发展。
因此,在信息系统开发风险客观存在的情况下,在信息系统建设过程中对其进行风险审计和控制就显得尤为重要。信息系统审计师在对内部控制实施评估和管理方面具有极强的业务能力和项目经验,他们的任务就是要识别在原有信息系统开发流程中的主要控制,评价这些主要控制被削弱或消失后对企业的影响,从而确保信息化建设项目的效益。
信息系统主要的开发方法包括生命周期法、原型法、企业系统规划方法、战略数据规划方法、信息工程方法和面向对象方法等。其中生命周期法是目前研究和应用最为成熟的信息系统开发方法。生命周期法从时间角度把信息系统的开发过程分为系统规划、系统分析、系统设计、系统实施、系统运行与维护共五个阶段,各个阶段都有各自相对独立的目标和任务,从而降低了系统开发的复杂性。
根据生命周期的五个阶段划分,信息系统开发过程管理审计在分别对这五个阶段进行审计的基础上展开,包括系统规划阶段审计、系统分析阶段审计、系统设计阶段审计、系统测试阶段审计和系统运行与维护阶段审计,同时增加了审计活动特有的,其系统开发团队对审计结果处理情况的后续监督阶段审计。上述共计六个阶段的审计,涵盖信息系统开发的全过程,每个阶段的审计都基于该阶段目前的进展情况,同时审计的结果将被考虑到下一个阶段的计划安排中,即将每个阶段的审计结论及时反馈给项目组,给予项目组改善和修正的指导,必要时对下一个阶段的计划安排做出适当调整,这样在审计人员与项目组成员的高度配合和良好合作的基础上,就可以形成良性循环,将风险项在相应阶段消化掉。
这六个阶段审计着重于评估开发团队的项目管理能力,包括用户的参与度以及用户需求满足情况、预算和项目进度跟踪机制是否存在且有效、系统测试是否涵盖所有的系统需求、项目相关文档是否有跟踪修正流程、是否存在有效的用户培训等。从而找出开发过程中制度和流程控制方面的不合规之处,并监督项目开发团队及时做出调整,从而降低系统陷入重新规划和设计甚至宣告项目失败的风险。其最终形成的审计报告同时又是保证企业持续发展和组织自我学习的工具,可以有效推进组织未来的系统开发管理方式,提高其项目管理水平,以确保企业系统开发项目持续成功。
1.系统规划阶段审计。系统规划阶段是整个系统开发的起点,在这一阶段,将由决策者、管理者和开发者共同参与制定系统的总体规划,以确保目标系统的科学性、经济性和适用性。系统规划阶段审计应围绕本阶段生成的信息系统发展战略、总体结构方案、可行性分析报告、项目开发计划等文档展开,通过文档生成过程以及内容评估:①信息系统总体规划是否服从于企业战略;②是否从企业的长远利益和需求出发;③可行性分析报告是否从技术、经济、组织环境等多方面系统完整地调研;④项目成员职责分配是否明确合理等。这些报告在整个系统开发过程中具有全局性和方向性,同时也是后期审计的重要标准。基于以上四点,总结了系统规划阶段审计的几个关键节点,并给出每个步骤的审计要点,如表1所示。
2.系统分析阶段审计。系统分析阶段主要包括需求分析、概念设计和逻辑设计三部分,需求分析是开发过程中关键性的一步,它是在建立一个新的或改变一个现存的系统,初期描写新系统的目的、范围、定义和功能时所要做的所有工作,包括了解用户业务环境、系统需求、业务流程和数据流向,在获取用户需求后进行需求开发,并完成概念设计和逻辑设计(薛华成,2010)。这一阶段的审计将围绕这些流程中生成的文档和图表,以及获取文档图表素材的过程展开。
需求分析阶段分为需求采集和分析两个模块。由于开发系统规模大小不同,所需要编写的文档也有所差异。一般来说,通过调研,将采集到的用户需求编写成用户需求说明书,待用户签字确认后,进入需求分析模块。审计重点在于是否基于用户提出的业务需求展开细节,并就细节与用户沟通,达成共识;是否用专业的逻辑思维将业务需求抽象到系统和组织中;系统是否摆脱了对组织机构的依从性,当信息系统拘泥于以前的组织结构和流程时,往往导致系统不能发挥其真正的作用,这样带给企业的价值有限,甚至禁锢了企业管理方式和组织流程优化。在需求分析报告编写好后,需要编写需求规格说明书,它是站在开发人员的角度,指导开发人员完成设计与开发的技术性文档。
表1 系统规划阶段审计节点及其要点
在充分的需求分析后进入概念设计,绘制E-R图来描述现实世界的概念模型,逻辑设计阶段生成业务流程图和数据流程图,其中业务流程图描述系统内各单位、人员之间的业务关系、作业顺序,而数据流程图反映出信息在系统中流动、处理和存储的情况。这三张图是后续详细设计和编码工作的源头,其准确性对系统成败有很大影响,审计过程中应评估是否就图表内容和逻辑与用户进行沟通,图表是否建立在充分的需求分析基础之上,是否完整表达了业务流程和数据流向等。这一阶段的关键审计节点及其要点如表2所示。
表2 系统分析阶段审计节点及其要点
3.系统设计阶段审计。系统设计是在系统分析阶段所确立的系统逻辑模型、功能要求的基础上,建立新系统的物理模型,这一阶段分为总体设计和详细设计两个步骤。总体设计解决软件系统的模块划分和模块的层次结构设计;详细设计是系统功能实现的基础,它解决每个模块的控制流程、内部算法、数据库设计和代码设计等具体细节的设计。
系统设计工作的好坏,将最终决定系统的质量,因此,这部分审计工作要细致到位,重点包括:用户需求是否都包含在内,这是评估系统最基本的要求,同时在设计阶段应保持与用户的不断交流与沟通,因为随着不断地深入了解系统,此阶段用户需求仍然可能有变更;代码设计要符合规范,包括代码编写规范、命名规范和注释规范,要注重效率性、可复用性;实现的系统应该便于理解、修改和扩充,随着用户企业的不断发展,对系统的业务很可能有进一步的变更,因此,模块、代码及数据库等设计要便于日后的修改;权限控制是否准确到位,组织中不同层次不同职能的人员的分工在系统中是通过权限分配得以实现的,因此这部分将影响企业业务活动的开展。此阶段的关键审计节点及其要点如表3所示。
4.系统测试阶段审计。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足需求规格的定义。系统测试阶段的审计围绕测试方案与计划、测试用例、测试说明书和测试报告展开,测试负责人根据需求分析报告、总体设计说明书和详细设计说明书编写测试方案和计划,审计重点在于方案的合规性、测试内容是否完整、接受标准是否清晰。测试用例是将测试具体量化的方法之一,同时也是设计和制定测试过程的基础,因此是审计的重要参考标准。测试说明书详细记录了测试过程、预期结果和实际结果,测试报告综合了整个测试项目的情况,对这两份文档的审计应该更注重真实性,并且审核是否具有有效的测试跟踪机制来确保测试中发现的问题得到及时更正。此阶段的关键审计节点及其要点如表4所示。
5.系统运行与维护阶段审计。系统运行维护阶段包括三个方面:①系统上线过渡阶段,包括对用户进行培训,审计主要围绕上线计划和实施、培训计划和实施进行;②系统的日常维护,审核相关制度规范以及实际落实情况;③系统功能改进和扩充,审计重点在于针对功能扩充是否有明确的流程管理。针对这三方面,关键的审计节点及其要点如表5所示。
6.后续监督阶段审计。后续监督阶段审计是指在审计结果反馈给项目开发团队后,该团队是否重视审计结果,并对审计报告中的问题进行及时处理,是否建立有效的学习机制,针对本次审计结果进行总结,只有当被审计团队正视审计结果并从中反省学习,才能达到审计的真正目的,才能尽量避免本次系统建设过程中出现的问题再次出现,从而持续提高系统开发成功率。这一阶段的关键审计节点及其要点如表6所示。
表3 系统设计阶段审计节点及其要点
信息系统开发过程的复杂性使得过程管理的审计内容和指标也具有较高的复杂性,因此只有分清生命周期各个阶段审计的主要和次要部分,抓住重点,明确审计目标,展开全面审计,才能充分发挥审计的作用。本文在生命周期各个阶段的要求和特点的基础上,针对系统开发过程管理的系统规划、系统分析、系统设计、系统测试和系统运行与维护五阶段分别指出具体的审计要点,同时指出应对审计结果反馈进行跟踪调查的具体内容。对信息系统开发过程管理全程审计,可以及时察觉系统开发过程中的不足和潜在问题,使其得到解决以保证系统满足用户需求,业务流程优化符合组织发展要求并给项目调整和改善以时间紧迫性和资源上的指导等。此外,审计过程中,审计人员与开发团队的关系也十分重要,只有建立在双方充分沟通和交流的基础上,系统开发和审计才可以达到效果、效率和经济性的有效统一。
表4 系统测试阶段审计节点及其要点
表5 系统运行与维护阶段审计节点及其要点
表6 后续监督阶段审计节点及其要点
刘松林.软件研发项目管理的审计研究[D].北京:北京邮电大学,2009.
吴炎太,林斌,孙烨.基于生命周期的信息系统内部控制风险管理研究[J].审计研究,2009(6).
Chris Davis, Mike Schiller, Kevin Wheeler.IT Auditing Using Controls to Protect Information Assets[M].New York:McGraw -Hill Osborne Media,2006.
薛华成.管理信息系统[M].北京:清华大学出版社,2010.
胡克瑾.IT审计[M].北京:电子工业出版社,2004.
F239.4;TP391
A
1004-0994(2017)35-0097-5
国家自然科学基金项目(项目编号:71672128,71071114);国家科技支撑计划课题(项目编号:2011BAC10B08);教育部社科支撑项目(项目编号:11YJC630216);上海市重点学科建设项目(项目编号:B310)
作者单位:同济大学经济与管理学院,上海200092