五、 基于“双赢”策略的软件外包采购思想
本文作者在集成美国项目管理协会的“项目管理知识体系指南”(PMBOK)和美国卡内基-梅隆大学软件工程研究所的“软件能力成熟度模型”(SW-CMM,SA-CMM)和ISO9000-3中关于外包采购的宗旨的基础上提出“双赢”策略的软件外包采购思想。
“双赢”策略的软件外包采购思想旨在利用双方业务能力互补,通过共同合作完成软件外包项目,达到“双赢”的目的,促进双方业务总体能力的提高。这种“双赢”策略要求双方在以下方面达成共识:双方共同关注过程控制,才能保证有效结果;只能成功,不能指望依靠惩罚手段来收回采购成本,软件外包采购项目的失败对整个项目带来的损失是巨大的;在合作过程中,建立对分承制商关系的管理体系,作为以后合作的基础;重视开发过程的风险评估和采购项目后评估,使得双方业务能力得到持续提高。
传统的外包采购中,采购方只关心分承制商产品的进度和质量,以为只要分承制商按期、按质交货,就可以圆满结束此次采购活动。有些项目尽管前期进度和质量满足合同要求,但是许多是以高投入、高负荷、高消耗等手段来保证的,这给后期带来极高的风险。在阶段评审中,如果采购方对分承制商开发过程中的费用投入、人员负荷、资源消耗、组织结构变化等漠不关心,因此就不能及早预见风险、控制风险。很难想象,后期在费用透支、人员疲惫或流失严重的情况下,分承制商仍能保证产品质量和进度。这种情况下,采购方只能要么加大投入,要么终止合同,并要求赔偿,要么延期验收等等。其副作用可想而知。而分承制商为了减少损失,根据博弈论中子博弈精练纳什均衡原理,必然采取降低质量要求,减少投入的策略,来加快进度。结果最终还是采购方遭受损失。
六、 软件项目外包采购管理过程
为了保证软件外包采购项目的顺利进行,本文作者在上诉理论体系和“双赢”采购策略的基础上,提出和细化了软件项目外包采购的总体框架和具体操作内容,旨在为软件项目外包采购管理人员提供具体的可操作过程。
对于本采购过程,如果业主方由于行业、人员等原因,没有健全的监控部门,可以聘请具有软件监理职责的公司,或者总承包给具有一定软件工程监控能力的公司。这时的总承包公司角色相当于本文提到的采购部。
软件项目的整个外包采购过程可以分为十个工作阶段,包括总体项目需求分析和设计、子项目的需求分析、厂商选择、分承制商开发、业主阶段评估、交验测试、安装、培训、维护,后评价。
在开始外包采购之前,首先业主要完成项目的总体需求规格说明书和承包项目的需求说明书。一般承包项目的需求分用户需求和分配需求。对于分承包商来说,业主对软件项目所提出的需求通称 “用户需求”。对于业主来说,系统总体分配给软件的系统需求通称 “分配需求”。如何作好子项目的需求分析和管理,请参阅《软件需求》,详见参考文献5。
然后业主把需求说明书交给采购组组织采购。采购部门收到需求说明书后,再补充质询调查表、报价指南、综合条款及条件等文件,组成采购质询技术文件发往厂商进行质询。采购部门在厂商质询的基础上,准备了厂商选择和投标估价等技术文件后,向业主送审,提请业主批准和确认所选厂商。在厂商选择和投标估价这两个文件中,采购部根据拟采购的软件对被质询的至少三家以上的供应厂商,就技术开发成熟能力、资源(包括以有的产品、硬件、软件、信息和已经过的培训)、资格和信誉、过去的合作关系、价格、提供的售后服务(包括培训和维护)、分承制方组织配置结构、与质询要求的差异等方面,经过经济技术和商业战略角度出发进行全面评估,经过其他各部门(例如系统工程组、软件工程组、质保组、财务组)审核后,列出供应厂商的优劣次序,择其优者为该项目的供应厂商。采购部一般以月为单位向业主通报软件采购情况。一般以招投标方式或内部评审的方式来确定分承制商。
分承制商在接到采购部的定货以后,就可以进行工作说明书、用户需求说明书、软件需求规格说明书、软件开发详细计划和成本概预算、测试计划、质量控制方法、风险控制、拟采用的软件工程标准和软件生命周期等文档的制作。然后分承制商把有关的技术资料文件通过业主的采购部送给业主进行校核和批准,然后才能开始开发。
业主在接到分承制商的上述材料后,组织系统工程部、软件工程部、质保部、财务部、采购部、法律部就上述材料中的开发项目视图和需求范围、使用或需要购买的软硬件、进度计划和成本、测试计划与案例、使用的技术和工程标准、人员配置等进行评审,并出具评审文件和风险评估、控制建议书。并由采购部制定采购项目监督评估计划书。合格后,由采购部、质保部及法律人员与分承制商签署详细的软件采购子合同。如需要对软件项目投保,以此来降低风险,需要和分承制商协商后,纳入合同文件。
分承制商在签署合同后可以进行设计和开发。业主应该委派采购部监督分承制商的工作。采购部应该有计划的组织质保部、软件工程部的项目计划管理人员和配置管理人员,定期对分承制商的开发活动进度、质量、成本等进行评估,并形成评估建议书。送审业主方的系统工程部、项目管理人员、分承制商的此项目的负责人。分承制方的项目负责人要对评估建议书的建议进行书面回复,并确保实施。
分承制方对所有需要采购的资源(软件、硬件、人力资源等)负责进行检验;采购部有权在任何时候对分承制商所采购的资源进行验证,使之符合所采用的规格说明书、规范、标准和其他技术文件所规定的要求,确保分承制商专款专用,建立开发环境。在这个阶段之前,采购部门和分承制商首先要确定由分承制商提供的验证建议书,并作好准备工作,提交检验用的技术文件,包括厂商说明书、设备性能数据表、配制清单、试验程序、检验技术要求。在检验的物质条件和技术条件均已准备妥善后,分承包商就可以向采购部并通过采购部向业主提出书面检验申请。一般分承包商可以提前三周通知采购部,由采购部提前两周以书面形式向业主提出检验申请,由业主召集系统工程部、软件工程部、质保部组成验证组,在规定的时间、地点检验。通过检验后,分承包商进入项目开发阶段;业主进入监控和评估阶段。对于重大关键项目,业主可以派遣项目监督员短期或长期进驻分承包商单位。
由于作为外部单位,业主不便时刻监督项目的开发过程。虽然理论上需要把分承制商看作是自己的一个项目部门来对待,纳入自己的进度控制和质量控制体系,但是客观上由于分承制商与业主距离较远,人员不熟悉,各自有自己的企业文化和管理体制,双方之间的信息沟通不畅,业主难以实时监督分承制商的开发进程和质量。最好的办法就是在分承制商的软件项目的各个里程碑处和分承制商一起进行检查和评估。软件项目一般可以划分成若干个里程碑(3-5个为益),分承制商需要提前一周通知采购部组织相关人员来评估。软件项目的里程碑一般指产品设计趋于稳定,中间产品定义趋于明晰,项目开发组真正了解项目实际的关键技术难度和可行的进度计划,开发活动停止,产品进入除错和稳定、随时可以发布的阶段,或当产品设计被删减、资源增加、进度延误的时候。在评估软件质量、进度和功能的同时,还要评估分承制商的人员工作负荷程度、风险、费用和资源消耗情况,并形成文档。由采购部送审系统工程部、软件工程部、项目管理部和分承制商的此项目负责人。
当产品进入交验测试的时候,分承制商需要提前三周通知采购部,采购部于前两周通知业主作好交验的组织评估准备工作。这时业主组织系统工程部、软件工程部、测试部、质保部和采购部,根据分承制商和业主在分承制商开发阶段预先共同定义、评审并批准的测试计划和验收方案进行验收测试,对需求规格说明书中的各项逐个详细的测试。最后以书面的形式给出对整个软件项目的测试评估报告。并对未通过验收测试的软件产品指定相应的补救措施和计划。分承制商交付给业主方的软件产品应当包括:源代码、软件开发计划、仿真环境、软件需求规格说明书、设计文档、软件测试计划、软件测试说明、验收测试计划、软件使用手册、软件安装手册、软件维护手册。必要的话,还包括相关培训计划。
软件采购的一个重要阶段是交货,也是目前经常忽略的阶段。当所采购的软件产品以及硬件运行环境在规定的时间到达采购部时候,采购部要以书面的形式通知业主交货。业主对所交的整个软件产品清单进行验收,并事先通知采购部拆箱日期,要采购部和分承包商的代表按时到场。业主要在接到采购部交货通知后一个月内,对所检查验收的整个软件产品(包括相关的软件、硬件及其附属产品、文档、技术资料等子合同中规定的产品)出具一份交货证明,如果这些提交的软件产品没有受到损坏并与装箱清单相一致,并在业主方环境运行良好;否则出具一份书面通知,说明在某个方面此产品损坏或与装箱单不符,或在业主方提供的环境运行不良。此通知或证明应由采购部和分承制商代表签署。如果在签合同的时候,就规定分承制商负责安装和调试,则相应的过程省略。
最后业主方由采购部把所有的文档归类封存,以备后续类似项目采购的参考查询。同时采购部在两个月之内以书面形式,对分承制商的技术开发成熟能力、资源(包括以有的产品、硬件、软件、人力资源和已经过的培训)、信誉、分承制方组织配置结构,管理能力和企业文化提交后评价报告,作为建立客户关系管理(CRM)的依据。对于此次采购的经验和教训,包括进度控制、质量控制、成本控制、客户关系控制、流程控制、风险控制等方面,采购部以文档的形式在组内讨论并保存。
七、 结束语:
作为大型工程项目中的软件子项目或者部分功能模块的采购(外包),由于软件开发的固有特性(风险大,柔性强,人为因素突出,结果不宜测量等),使软件项目的外包采购管理变得十分复杂。如何控制分承制商的开发进度和质量等关键因素,需要在实践中不断探索,并针对具体公司和项目对采购过程有所裁剪。