企业运营及管理越来越依赖于信息技术,同时监管机构对企业风险管理的要求也越来越明确,对包括软件研发项目管理在内的信息系统规划、建设及运行进行审计成为检验企业风险管理充分性与有效性的重要手段。因此我选择软件研发项目管理的审计过程和方法作为硕士论文的研究对象,并在2009年3月14日顺利通过答辩。本论文在对软件研发项目风险管理和信息系统审计方法进行理论研究的基础上,重点对软件研发项目管理的审计过程及方法进行了深入的研究。
首先,在COSO全面风险管理模型的基础上提出了软件研发风险管理框架,对软件研发项目管理审计的过程进行了明确,并按照软件研发项目管理过程的六个阶段(项目启动、需求分析、软件设计、编码及测试、试运行及发布、项目收尾)给出了软件研发项目管理的风险控制矩阵,明确了各阶段的控制目标、风险描述、最佳控制实践及相应的测试方法,为对软件研发项目管理过程进行评价提供了基础。
接着,本论文又给出了软件研发项目管理水平的定量评价模型,该评价模型从软件研发项目管理过程及管理结果(项目进度、项目成本和项目质量目标的实现程度)两个方面对软件研发项目管理情况进行整体评价,按照评价得分情况将软件研发项目管理水平分为五个等级。
最后,本文通过案例研究的方式对软件研发项目管理审计流程、方法和评价模型的科学性和实用性进行了实证。
1、项目启动
软件研发项目管理的审计作为一个审计项目其项目启动的过程与传统的审计项目类似。在信息系统审计项目的启动阶段主要是对审计对象、审计范围进行确定并据此制定审计计划、组成审计团队。
信息系统审计项目或者是作为内部控制审计项目的子项目或者是作为某次专项审计而出现。在确定进行信息系统审计后,首先任命审计项目负责人,审计项目负责人应熟悉审计方法论,对审计标准、审计活动的组织十分了解,同时具有较强的项目管理能力。由于审计对象本身的专业性比较强,不少组织将自己的信息系统审计项目外包,在这种情况下,审计项目负责人需要与外包单位签订审计协议,对审计项目的相关内容进行规范。
在审计项目启动阶段,最重要的是确定审计目标,审计目标或者是为了满足监管要求,或者是为了提高被审计单位的信息系统风险管控水平。审计项目负责人需要与审计发起者共同协商确定审计目标。软件研发项目管理的审计目标一般是为了发现软件研发管理过程中存在的问题,对软件研发项目风险管理中存在的薄弱环节提出改进意见和建议,以加强对软件研发项目的管理,从根本上保证软件研发项目的成功。
审计范围需要根据审计目标结合被审计对象的实际情况确定。软件研发项目管理是一个完整的过程,实际审计过程中既可以对软件研发项目管理的全过程进行审计,也可以选择组织认为问题比较严重的某几个环节进行审计。同时软件研发项目管理体现在具体的软件研发项目中,为了能对组织的软件研发项目管理状况有一个整体的印象,需要对多个软件研发项目的管理过程进行审计。因此对软件研发项目管理进行审计,既可以针对单个软件研发项目进行,也可以对企业软件研发项目管理的整体情况进行评价。
根据确定的审计目标和审计范围,信息系统审计项目负责人需要制定审计计划,编制审计方案,准备审计工具等。信息系统项目审计计划包括审计进度计划、人员组织计划等,审计进度计划应合理设置审计项目的里程碑,如审计项目启动、初步调研、现场审计、审计分析、审计报告编制等,根据审计发起人确定的最终项目完成时间或者审计内容合理安排各阶段的进度;审计组人员主要包括审计项目负责人、审计师、项目管理专家、资深软件研发工程师、文档管理员等,需要根据相关人员的时间安排合理确定人员调配计划,必要时还可能外聘相关专业人员参加。
在确定了审计目标、审计范围,制定了审计计划和审计方案之后,应组织召开审计项目启动会议,除了审计项目组人员之外,还应邀请被审计单位负责人参加项目启动会议。在信息系统审计项目启动会议上,审计项目负责人应对审计目标、审计范围、审计计划进行介绍,为了保证审计的效果,对审计方案应有选择地向被审计单位介绍。审计项目启动会议的目的是为了统一审计组人员的认识,同时得到被审计单位的支持。
2、信息调研
对软件研发项目管理进行审计,需要对被审计单位软件研发项目管理的现状进行调研,重点了解被审计单位项目的组织情况、项目管理的过程、项目管理内容以及项目管理的有关制度、流程,收集软件研发项目管理相关的过程文档。信息调研的目的是为了在熟悉被审计单位软件研发项目管理现状的基础上,为编制风险控制矩阵,制定控制测试计划提供素材。为了提高工作效率,使被审计单位更好地配合审计项目的工作,审计项目组应拟定“需被审计单位提供的文档资料清单”。
对软件研发项目管理的主要调研内容如下:
1)、被审计单位项目治理架构;
2)、被审计单位项目管理的组织架构及职能分工;
3)、被审计单位颁布的有关项目管理的制度、流程、指南等;
4)、被审计单位软件研发项目管理的过程及存在的问题;
5)、被审计单位软件研发项目风险管理的过程及存在的问题;
6)、被审计单位三年内完成或正在进行的软件研发项目清单;
7)、上述软件研发项目的项目立项、需求分析、设计、编码、测试及投产等阶段相关的技术文档和项目管理文档;
8)、以往软件研发项目管理审计的审计底稿;
9)、三年内的与软件研发项目管理相关的外部审计与内部审计报告;
10)、…..
3、控制矩阵编制
在这个阶段,审计项目组首先应对软件研发项目管理每个阶段的控制目标进行明确,这些控制目标一般是根据风险管理控制措施对保证项目目标达成的角度来确定的。软件研发项目每个阶段的风险管理控制目标一般都是固定的,必要时应根据被审计单位软件研发项目管理的实际情况进行修订。对应软件研发项目各个阶段的管理控制目标,审计项目组应根据项目管理的最佳实践,结合监管部门的有关要求,明确每个阶段的最佳风险控制措施。
对收集到的被审计单位软件研发项目管理相关资料的基础上,结合现场访谈调研的结果,对应软件研发的各个阶段列出被审计单位现有的风险管理控制措施。按照控制目标、最佳控制实践,对被审计单位现有软件研发项目管理的控制措施进行差距分析,明确被审计单位软件研发项目管理过程的风险大小,对风险比较大的控制措施应作为下一阶段控制测试的重点。
对软件研发项目管理控制目标、最佳控制措施、现有控制措施以及软件研发项目风险管理控制的差距以风险控制矩阵的形式记录。
4、控制测试及分析
对风险控制的审计主要是从控制措施的充分性和有效性进行分析,从而确定被审计单位软件研发项目管理的状况。所谓控制措施的充分性主要是指组织根据软件研发项目管理过程风险分析的结果,确定了软件研发项目管理的风险管理策略,并在此基础据上制定了合适的软件研发项目管理流程、制度。如果这些管理制度、流程能够有效落实,那么组织的软件发研发项目管理将能够满足有关要求,保证软件研发项目目标的实现。
对于软件研发项目管理过程控制措施的充分性,审计人员利用自己的知识、经验通过分析就可以得出结论。对于软件研发项目管理过程控制措施的有效性验证则需要通过控制测试来实现。在风险控制矩阵中,按照软件研发项目的不同阶段分别列出了现有项目管理过程存在风险的对应控制措施,审计人员需要根据不同控制措施的实际情况,制定控制测试方案,来检查这些控制措施是否在实际的软件研发项目管理过程中得到了有效落实。
5、审计报告及建议
在完成对被审计单位软件研发项目管理过程的控制测试及分析后,需要将审计发现、审计结论及建议等有关内容按照规范的格式形成审计报告。在最后审阅审计工作底稿的基础上,审计项目负责人召开审计小组的内部会议,对记录的审计发现、结论和建议进行充分的讨论,评估发现问题的重要性并决定是否予以报告。
对软件研发项目管理的审计结论既可以在定性分析的基础上给出,也可以进行定量分析后给出。定性分析主要由审计项目组按照软件研发项目管理的不同阶段,对控制测试的结果进行分析,进而形成对被审计单位软件研发项目管理的整体印象。定量分析主要是通过对软件研发项目各阶段以及每个阶段的主要控制目标进行赋值,然后进行加权汇总,然后根据总体得分情况确定被审计单位软件研发项目管理的等级水平。在实际的审计项目中,对小型的审计项目一般采用定性分析的方式,对比较复杂的审计项目一般采用定量分析和定性分析相结合的方式。
审计建议的基础是审计人员在对被审计单位软件研发项目管理审计中的发现和结论,它们要求采取措施纠正存在的问题或改进操作。对于软件研发项目管理的审计来说,审计人员应为被审计单位提出软件研发项目管理的改进建议,改进建议应符合被审计单位的实际情况,具有一定的可操作性。
通常,正式的最终书面审计报告应该包括背景介绍,审查范围,意见或评价,发现的问题、建议和结论,被审查者的评论等几个方面的内容。审计报告要在现场审计实施完成后及时予以编写,并在语法、风格和技术上给予恰当的考虑,达到客观,简洁、及时并富有建设性的标准。
6、后续监督
在内部审计实务中,作为完整审计过程的一个阶段,后续监督意味对报告中反映的问题进行跟踪检查,确认管理层针对已报告的审计发现和建议所采取的行动是否适当、有效和及时的过程。《内部审计专业实务标准》指出,内部审计人员应该进行后续跟踪,以确定对已报告的审计发现是否采取了恰当的纠正措施:确定纠正的措施是否已经实施并正在取得预期的效果,或者是确定企业管理当局(或董事会审计委员会)是否对已报告的发现已经承担了不采取纠正的风险。
|