内容提要: 随着我军信息化建设步伐的加快, 军用软件开发的高峰正在到来, 但是目前我军军用软件项目的管理还存在不规范、不科学的问题, 从而导致了军用软件的质量不高、性能不强、适应性差。对此, 应从风险及风险管理入手, 重视对军用软件项目进行风险识别和分析, 重视对军用软件进行质量测评, 还要重视用户的信息反馈。
军用软件在以信息技术为核心的现代高技术局部战争中, 无论在作战指挥、还是在后勤保障等方面都将发挥着越来越重要的作用。随着我军信息化建设步伐的加快, 军用软件开发的高峰正在到来,但是目前我军军用软件项目的管理在很多方面还不规范、不科学, 从而导致了军用软件的质量不高、性能不强、适应性差。鉴于此, 加强研究军用软件项目风险管理, 切实提高我军软件质量, 对推进我军信息化建设有着重要的意义。
一、风险与风险管理
“风险”是个抽象的概念, 代表那些可能导致所做的事情不能按照计划去完成的所有因素。这些因素虽然还没有发生, 但在某些特定的条件下, 会在项目进行的过程中发生, 并直接导致项目延期、成本增加、项目质量降低甚至项目失败。
风险管理就是在风险发生之前, 对这些可能导致项目延期、成本增加、质量下降、项目失败的因素进行识别、分析、评估并制定防范措施的过程。
二、军用软件项目风险管理过程
军用软件项目风险管理可分为五个步骤, 即风险识别、风险分析、风险计划、风险应对以及风险跟踪。
(一) 风险识别
风险识别是试图用系统化的方法来确定威胁项目计划的因素。识别的方法包括风险检查表、头脑风暴会议、流程图分析以及与项目人员面谈等。前两种方法是比较常用的。风险检查表建立在以前开发类似的项目中曾经遇到的风险基础上, 比如开发时利用了某种技术, 那么有过这种技术开发经验的个人或者项目组就能指出他们在利用这种技术时遇到过的问题; 头脑风暴会议可以围绕项目中有可能出现哪些范围、进度、成本和质量方面的问题, 开展讨论和列举项目可能出现的风险。
(二) 风险分析
风险分析分为定性风险分析和定量风险分析。定性风险分析是评估已识别风险的影响和可能性的过程。这一过程用来确定风险对项目目标可能的影响并对风险进行排序。它在明确特定风险和指导风险应对方面十分重要。而定量风险分析过程的目标是量化分析每一风险的概率及其对项目目标造成的后果, 同时也要分析项目总体风险的程度。军用软件项目风险主要包括项目实施阶段的风险和后项目风险。
1. 项目实施阶段的风险。这一阶段的风险有五个方面:
第一, 进度风险。进度风险常常是软件开发项目的第一个风险因素, 大部分不能按期完成项目的主要原因在于计划和实际情况的差别。一是开发周期定得不科学。大多数项目是在一定的需求前提下提出来的, 因此一般都要求赶工期, 这在传统项目中很常见。对于软件开发项目, 工期一般是一定的, 按照软件工程理论和实践经验, 一般中小系统能够准确地估计时间。但是大多数用户都要求开发商在限定的工期内完成, 其要求工期远远短于开发实际需要的时间, 此时就要求双方协商给出一个合理的开发周期。二是技术难度系数估计不足。其主要原因是开发的软件项目包括以前没有开发过的、目前也没有试验的内容。对于陌生的领域, 开发者怎样承诺都会有风险。这种风险表现为根本实现不了或者实现起来时间很长。如果遇到这方面的风险因素, 应该及早地进行试验, 并和用户协商以取得有效的方法来保证将风险的影响降到最低。三是特殊原因。包括国家政治、经济形势、交通状况、行业政策等社会政治经济因素。
第二, 软件设计风险。一是平台选用问题。在军用战术技术的设计中, 底层的操作系统多为购买国外的产品, 没有自主知识产权。在底层开发中受制于人。对于这些操作系统下的应用软件的测试工作也不能让人满意。二是接口设计问题。如果设计的系统比较复杂, 涉及多个系统间的通信就有接口问题, 包括通信协议的制定、执行、对接联调都需要花费很多的时间去完成。三是数据库设计问题。目前所有软件都要涉及数据库。小的数据库可能是几张表, 关系很简单; 大的数据库则是几百张表,关系非常复杂, 数据库设计得不好就有风险。四是专业设计问题。部队用户需要的软件专业性很强,因此对部队用户专业的了解程度在很大程度上决定了项目的效率和最终用户满意度。专业性很强的用户要求项目团队不断与用户交流, 掌握用户需要的每一个细节。
第三, 用户满意度风险。用户满意度是项目开发中极为重要的一环, 通常包含三个方面的问题:一是功能满意度欠佳。软件开发完成后, 最主要的目的就是达到用户要求的功能。如果在前期没有进行详细的分析和设计, 开发过程中开发商和用户没有进行有效的沟通并对软件开发提出建议, 将会给最终产品带来意想不到的结果。二是用户界面不良。良好的用户界面就像给用户一个良好的工作环境一样重要; 而界面枯燥、繁琐会给部队使用带来许多不必要的麻烦, 操作界面过于繁琐就有可能贻误战机, 使战斗单位在战斗中处于劣势。例如: 千方百计地提高的保障方案生成系统的反应速度却因操作界面的繁琐而被降低。三是与用户关系不密切。软件项目周期长, 在合作过程中双方的关系会随着时间的推移而发生变化, 尤其是项目小组成员, 必须和用户建立良好的合作关系, 才能保证项目顺利完成及后期产品的升级维护, 才能切实提高装备的战斗力。
第四, 协作关系风险。协作关系是指可能由几家开发商合作开发, 主要有以下风险因素: 一是委托开发的协作关系问题。开发厂家在技术或人力资源不足的情况下, 将项目的一部分委托给第三方开发, 这就产生委托开发的协作关系问题。一般情况下, 开发厂家应该将这种委托关系报告给部队用户的相关部门, 并征得部队用户方的同意。委托开发最主要的问题就是时间和质量。二是协作方的地域问题。如果协作方地域位置距离较远, 这就要在很大程度上考虑距离带来的项目周期延长的问题。
第五, 人力资源风险。软件开发是知识性的人为劳动, 目前世界上所有国家的软件开发人员流动性都很大, 因此人力资源风险也是项目风险中重要因素, 主要有: 一是保密问题。军用软件关系着国家的安危。开发方主要由军工企业和地方软件开发公司构成, 虽然他们对保密要求严格, 但相比部队用户的保密要求还有很多不足之处。他们人员流动较快, 只要思想上稍有松懈就会酿成难以估量的后果。二是项目成员流动问题。组成项目组的开发人员在项目过程中会发生流动变化。这种流动可能导致项目小组成员之间的关系不协调, 影响工作的速度和质量。三是项目负责人意外事故。项目负责人是项目组的核心成员, 直接控制项目的计划与实施, 故项目负责人的稳定性很大程度上决定了项目的成败。四是开发人员技术能力欠佳。组成好的项目组对软件开发项目的成败有很大关系。开发组成员必须是具有能够完成软件项目中所有需要的技术能力的人员。
2. 后项目风险。后项目风险指的是项目验收
后遇到的风险。考虑这些的原因在于项目完成后开发方继续对用户的技术支持, 以建立长期的合作关系。后项目风险主要包括两个方面: 一是救援风险。灾难通常发生在用户方。例如, 用户在使用系统过程中, 由于错误操作导致数据库服务器崩溃、数据丢失, 或由于敌人的电磁战, 导致病毒破坏或数据泄密等。灾难救援工作通常是问题发生后才启动的, 这时最重要的就是帮助部队解决问题, 并帮助部队制定以后防范的措施。二是用户需求变更的风险。软件开发完成以后, 在软件的使用过程中,用户又提出了新想法或改变了想法, 并请求软件开发厂家帮助解决问题。通常的做法是, 在一定的工作量范围内尽量帮助用户解决问题, 尽量满足用户需要。但应该有一定的限制条件, 否则会大大增加项目成本。通过对以上风险的分析, 可以知道哪些风险是必须要应对的, 哪些是可以接受的, 哪些是可以忽略的。进行风险管理应该把主要精力集中在那些影响力大、影响范围广和概率高的风险上。
(三) 风险计划
制定风险行动计划应包括以下要素: 责任、资源、时间、活动、应对措施、结果、负责人。该阶段涉及到参考计划、基准计划和应急计划三种不同类型的计划。参考计划是用来与当前建议进行比较的参考点。基准计划是提出项目实施起始位置。应急计划是建立在基准计划基础上的建议补充计划,包括启动意外情况应对措施