外包(outsourcing),英文的直译是“外部资源”,指企业整合利用其外部最优秀的专业化资源,从而达到降低成本,提高效率,充分发挥自身核心竞争力和增强企业对环境的应变能力的一种管理模式。软件外包起源于印度,顾名思义,是指把软件生产、销售和维护的某个或某些环节交由其他公司来完成。软件外包作为一种降低软件开发成本和缩短软件开发时间的有效手段,被许多软件公司应用到软件产品各个生命周期中。软件外包有很多优点,但很多企业实施外包最主要的目的并不是为了降低开发成本,而是为了解决企业内部人力资源的限制,使得企业不用招聘新员工就可以接手大型项目。按照外包的内容不同,可以将软件外包可分为软件产品开发(software product & tech-nology services)外包、软件专业服务(software related services)外包、IT关联服务(IT enabled services)外包三类。 IT审计,又被称为信息系统审计(information system audit),目前还没有固定通用的定义。1996年日本通产省对IT审计作出如下定义:“为了信息系统的安全、可靠与有效,由独立于审计对象的IT审计师,以第三方的客观立场对以计算机为核心的信息系统进行综合的检查与评价,向IT审计对象的最高领导提出问题与建议的一连串活动。” 软件外包IT审计的对象是外包的软件,它涵盖了软件发包、软件开发和软件运行维护的整个过程。同建筑产品外包一样,软件产品的外包质量是外包的关键所在。抛开外包过程中发包人、承包人责任心等一些主观因素,就外包软件类型而言,目前软件外包的主要内容是重写核心系统、重新设计系统、维护老系统、数据清洗和软件升级。这些工作非常枯燥且费时费力,承包人很容易偷工减料、马虎了事,进而影响到整个软件的质量。为了保证外包软件的质量,我们在外包过程中引入IT审计制度,对以计算机为核心的软件从发包开始,到软件规划、分析、设计、编程、测试、运行、维护的整个外包软件生命周期实施IT审计。软件外包IT审计主要包括以下内容。 (1)发包方的审计。主要审计发包方是否具有完善的项目管理体制,是否具有雄厚的技术实力和优秀的技术人员;是否具有良好的信誉度和品牌度;是否能够清晰地分析发包软件的产品需求,并用文档的形式记录下来。 (2)承包方的审计。主要是审计承包方是否具有发包方要求的设计技术和人才,软件开发管理是否正规,是否具有良好的业界信誉。 (3)发包流程审计。主要是审计是否具有完整、详细的外包合作过程与计划;合作协议是否规范;发包方是否依据计划跟踪承包方的软件开发过程,并按照文档化的规范,对承包方的工作陈述、子合同条款、条件以及其他约定进行更改;发包方和承包方双方的管理者是否一起执行定期的状态或协调评审;承包商是否参与定期技术评审和交流;按照文档化的规范在所选择的里程碑处进行正式评审,评价承包商的软件工程完成情况与结果。 (4)软件开发的管理、规划与组织的审计。主要是审计软件的管理、计划与组织方面的策略、政策、标准、程序和相关实务;以软件开发计划为标准,跟踪软件开发过程,包括软件开发的规划、分析、设计和实施过程,比照CMM和ISO9000标准,对出现的问题及时更正;尽量减少软件开发错误的“水波效应”;审计发包方是否按照文档化的规范进行验收测试,定期评价承包商的能力。 (5)软件技术基础设施与操作实务审计。主要是审计评价承包方在技术与操作基础设施的管理和实施方面的有效性及其效率,以确保其充分支持软件的目标。 (6)资产的保护审计。主要是对逻辑、环境与信息技术基础设施的安全性进行评价审计,确保发包方能保护信息资产,防止信息资产在未经授权的情况下被使用、披露、修改、损坏或丢失,造成不必要的、意想不到的灾难。 (7)灾难恢复与业务持续计划审计。主要审计在发生灾难时,能够使发包方的业务持续进行,并对这种计划的建立和维护流程进行评价。 (8)软件实施与维护及业务流程评价与风险管理审计。主要是对应用软件的实施与维护方面所采用的方法和流程进行审计,评估业务系统与处理流程,确保根据组织的业务目标对相应风险实施管理。 目前国际上对IT项目进行监控常用的方法是IT项目管理。虽然IT审计和IT项目管理都是由第三方对软件的质量进行监督管理,但IT项目管理的对象是工程项目,仅覆盖软件的开发阶段,即在一定的成本、进度和质量目标下,控制项目的开发,当项目完成后,项目管理工作就结束了,而对占软件生命周期60%~70%的软件运行维护阶段的质量却没有监控。实际上,软件开发过程中的测试工作并不能把软件开发过程的所有bug(故障)全部测试出来,而这些bug的存在是软件运行过程中的隐患,随时都会转化为软件的运行风险。外包的软件由于软件发包方和承包方的多种原因,在软件中就可能存在较多的bug,如果不对软件运行和维护阶段进行监控,无形中就加大了软件外包的风险。软件外包过程引入IT审计,不仅是在软件的开发阶段进行跟踪审计,而且还包括了在软件的运行维护阶段进行监控,这在制度上保证了外包软件的质量,避免了外包风险。