基于信息化的软件开发项目管理

2018-11-15 11:17樊亮阚青
项目管理技术 2018年11期
关键词:信息化过程信息

樊亮 阚青

(中国电科第28研究所,江苏 南京 210007)

0 引言

对于软件产品来说,探索软件开发方法和技术以提高计算机软件开发效率和质量,是软件工程领域探讨的主要话题。提高质量和产品功能的同时,缩短开发周期、降低开发成本是许多优秀软件开发企业不断追求、自我完善的目标,也是在激烈的市场竞争中生存的根本。这不只是简单的代码质量问题,而更是一个从管理学角度上不断优化、创新,面对需求调整适应的过程。因此,理解和研究新型的、现代化的,基于信息化的软件开发项目管理模式对企业及管理者来说具有非常重要的意义[1]。

1 现状与存在的问题

1.1 软件开发的现状

40年前Winston Royce(1970)博士提出了瀑布式软件开发模式,对软件开发项目管理的发展起到了一定的积极作用。这个生命周期模型识别出了软件开发所需的重要活动以及除代码外的过程产出物。它对需求明确、开发技术成熟的项目确实有很好的指导作用。多年来,大部分的软件开发项目执行的都是瀑布开发模式。

1.2 软件瀑布开发模式的主要问题

软件开发项目过程由一系列互不交互的阶段组成,瀑布开发模式要求上个阶段的工作全部完成并通过出口检查评审后,下个阶段才能开始。而实际的情况是,大部分软件开发项目在需求活动完成前就已经开始了设计工作,很少有团队真正百分之百执行瀑布开发模式。软件开发项目中的不确定性,特别是需求的不确定性和技术的不确定性,导致了过程重复是有限的,不可能走同样的开发步骤,因此变更不可避免地发生。而变更的代价,瀑布开发模式往往不能承受,这是“明确定义过程”不适用于复杂软件开发项目管理的重要原因,大部分的软件开发项目正是在这种矛盾中艰难前行的。

瀑布开发模式的不合理之处在于对开发产品了解最少时,做出对产品功能、性能、进度、成本的承诺并惩罚变更。因此,软件开发项目特别是复杂软件开发项目需要一套真正适用的开发模式。近年来,敏捷开发模式正越来越受到软件开发项目的关注和重视[2]。

1.3 开发工具及手段相对落后

软件开发过程不同于硬件研发过程,随着开发的不断深入,变更无时无刻不在,软件版本的更迭、升级相对频繁,需求管理难度逐渐增大。在大部分项目的实际开发中,一般都不具备有效的开发管理工具,很多项目组还在利用表单、人工记录、人工核对等方式进行软件开发项目过程的管理,效率很低,难以实时有效地进行软件版本管理。并且针对需求从设计到编码,再到测试,缺乏一体化的高效的跟踪监控机制。

2 信息化手段对软件开发项目的意义

2.1 传统的手工向自动化转变

传统的软件开发项目中需要记录的过程数据信息,如工时、评审问题、测试缺陷等均由人工填写完成,过程的执行、审批记录均采取纸质形式保存,进行量化分析时依靠人工进行统计、计算、分析。从记录到收集,再到计算分析的过程需要花费大量的人力工时,同时还存在较大的错误风险。开发人员疲于记录大量的工作信息,不能将主要精力集中于软件开发工作本身,从而产生抵触情绪,无法有效推进软件工程化管理。

利用信息化手段就是要解决数据信息产生、收集、汇总、分析、评估的自动化,把开发人员从大量的手工记录中解放出来。所有信息在软件开发项目活动的执行过程中被自动记录下来,并进行收集、分析,实时展现分析结果信息。

2.2 确保过程信息记录的及时性与准确性

人工记录过程中最大的问题是实时性和准确性难以保证。记录的时机一般为该项软件开发项目活动结束时,或者数据已经产生后,因此很难保证实时记录,并且人工记录不可避免地会出现记录错误,某一处错误将导致最终统计结果的偏差,错误查找并修复将花费更多的人力成本。

利用信息化手段的优势可以轻易地确保过程信息记录的及时性和准确性。在项目研发活动执行的过程中,信息系统可以及时保存操作的记录、工时、缺陷等信息,并且不会出现记录错误的问题,从而确保过程记录信息的实时、有效。

2.3 确保信息的可追溯性

手工操作时项目研发过程的数据信息记录和审批表单通常由纸质表单保存。当需要追溯时间久远的记录信息及审批表单时,查找的信息介质往往因为保存不当或记录不清晰,无法提供所需的完整信息,造成信息追溯困难。

利用信息化手段可以完整提供需追溯的信息,同时还可以查询与之相关的其他关联信息供参考,信息量大,可追溯性强。

2.4 信息化对敏捷开发模式的有效支撑

软件敏捷开发模式的特点:一是强调项目人员的互动,二是利用频繁交付工作软件与用户沟通,三是及时响应变更[2]。信息化对这三方面特点能够提供有力的支撑(图1)。

图1 信息化对软件开发项目的支撑

(1)对项目人员互动的支撑。在整个软件开发项目期间,项目组人员包括业务人员与开发人员可以天天沟通、一起解决问题。复杂软件开发项目不会完全依据计划进行,各种不可预测的因素会使实际与计划产生偏差,因此有效、频繁的交互是及时发现并解决问题的有效手段。利用信息化手段还可及时同步项目信息,将任何变更信息及时通知项目组的每个人,同时任何人可以利用信息化提出问题及解决办法,与项目组的其他人员实时分享和学习。信息化是对项目人员互动的有效支撑。

(2)对频繁交付工作软件的支撑。频繁的交付工作软件能够给利益相关人员提供一个很好的沟通平台。这些反馈可以让开发团队和产品管理团队及时对产品的方向做出调整,也可以让开发团队及时总结、对使用的过程进行调整。和瀑布开发模式不同的是,敏捷开发模式对开发阶段没有重要的分割,不是需求阶段、分析阶段、设计阶段、编码阶段等的接力,而是各阶段工作同时开展,因此纯手工的软件开发项目管理手段对此就显得忙乱而低效,给管理带来风险。利用信息化手段可以轻而易举地解决这些问题,信息化手段能够提供有效的需求管理系统、版本管理系统、问题处理反馈系统等,确保软件需求变更及时、版本可控、问题处理高效,保障软件频繁交付工作的顺利开展。

(3)对及时响应变更的支撑。变化是软件开发项目过程中的一个常态,比如:客户对业务的理解加深会导致变更,开发环境变化会导致变更,技术的变化会导致变更,人员的变动也会带来变更。必须及时抛弃过时计划元素,更新计划响应变化。项目的目的不是符合计划,而是用计划指导,开发出对客户有价值的产品。为此,变更的管控尤为重要,以传统的手工方式管理变更常常会遇到变更信息传递不及时,有时某一变更还未审批结束,新的变更需求又产生了,同时靠人工去识别变更影响域,难免会有疏漏。利用信息化手段就可以将变更信息及时传递给每个项目成员,并用信息系统自动关联所需要变更的部分,提示项目人员及时做出变更,反馈变更信息。信息化是对及时响应变更最有效的支撑手段。

3 基于信息化的软件开发项目管理实施方法

3.1 部署各类专业工具

实施软件开发管理信息化的首要步骤是部署各个阶段活动所需要的信息化专业工具,将重要活动的信息节点建立起来。

(1)需求开发活动。部署专业的需求管理工具,从以往以计划为任务驱动的方式转变为以需求为任务驱动的方式开展项目活动。同时,建立以需求为管理主线的项目全生命周期的全维度跟踪管理模式,跟踪从需求到设计、编码、测试、缺陷修改,再到回归测试的全过程。需求的变更可以及时传递至项目组相关人员,同时自动识别变更影响域,自动收集分析各阶段产品的需求覆盖率信息、需求分析人员的能力信息等。

(2)设计活动。部署专业的设计管理工具,将原先的线下设计工作转向线上开展。借助设计工具的能力,设计人员可在需求的框架下、相关标准要求的设定下,开展设计工作,系统可按照设计的要素输出设计文档,同时系统记录分析设计对需求的覆盖率、设计的标准符合率、设计人员能力信息等。

(3)编码活动。改变以往基于电子或纸质表单方式进行配置管理流程流转的方式,形成统一的配置管理信息化手段,基于SVN服务器建立专业的配置管理工具,构建“开发库”“受控库”“产品库”,在线运行配置管理业务流程。编码人员完成编码工作后自动及时将代码上传至配置管理服务器中相应的代码库,等待出库开展测试工作。

(4)测试活动。集成部署专业的自动化测试工具与缺陷管理工具,实施单元测试、配置项测试、系统测试及缺陷关闭。系统可自动收集、分析、统计软件产品的质量信息、编码人员的能力信息、测试人员的能力信息等。

3.2 建立信息互通共享及分析评估机制

部署完成各专业工具后,需要打通各工具间的信息通道,让孤立的信息孤岛连接成一个一体化开发管理的信息平台,自动收集、分析、评估、展示研发相关的质量信息。具体的实施工作:一是要明确统计、分析、评估的质量信息内容,如产品质量信息、人员能力信息、工作效率等,开发分析评估模型;二是要识别互通共享利用的信息要素,包括系统基础信息和工具运行的应用信息;三是梳理共享信息的流向,打通信息通道。

3.3 完善信息监控

对收集到的各工具的数据信息进行统计分析后,可以获得有关产品质量、人员能力、工作效率等方面的信息。这些信息是评价研发工作的重要参数指标,应实时展现出来,并作为项目管理者决策的依据。在信息化建设中应着力打造一套项目全生命周期的质量信息监控系统,及时展示研发过程中各阶段活动的重要质量信息,同时对信息进行自动监控,对存在的风险趋势予以告警,以引起关注,采取必要措施应对风险[3]。

4 基于信息化的软件开发项目管理实施要点

4.1 从传统流程化向产品化转变

传统的软件开发项目管理信息化以流程为基础,打造基于流程应用的功能模块,从某种意义上说,是在已定义的框架下开展软件开发,关注的焦点是过程是否符合流程;而软件敏捷开发所关注的焦点是产品,是不断迭代的产品,一切要围绕产品是否满足用户需要展开。因此,敏捷开发的信息化管理模式围绕需求展开,以需求为导向,以需求为任务驱动,任何工作的标准是满足需求,而不仅仅是符合流程操作。

4.2 信息化工具的推广

一旦建立了软件开发管理信息化,所要开展的重要工作就是信息化的推广使用。要使使用者改变以往的操作习惯,同时理解敏捷开发的重要原则,并乐于利用新工具进行开发尝试,这是推广的关键。推广使用工作可分为三部分:一是软件开发管理规范的宣贯;二是业务操作的培训;三是使用者针对各自使用的实际特点,基于工具能力制定软件工程化的实施规范,进一步深化工具的使用。

4.3 本地化的适配

在具体实施时,一定要与组织的实际情况紧密结合,考虑项目的特点,制定本地化的过程,不断去完善过程。本地化意味着深入理解团队、客户、产品需求、技术平台、组织文化、工具情况、工作环境等因素。在组织架构下,由谁来做过程经理、如何设计产品需求列表、如何描述用户故事,这些都是需要根据自己组织的情况来确定的。

4.4 信息化的完善

唯一不变的是变化。软件开发项目研发模式也是一样的,随着各种新技术、新方法的应用,软件开发项目的研发模式会不断更新换代,不存在一成不变的好方法。对于信息化手段也要紧跟发展的步伐,做好信息系统不断改进完善的工作,不断收集使用反馈、改进建议、解决使用问题,进一步完善信息系统的功能,为软件开发管理提供有力保障[4]。

5 结语

软件开发中永远不变的就是需求的变化。传统的瀑布开发模式适合需求较为清晰明确的软件开发,而敏捷开发模式所自带的快速反馈机制更适应大多数客户需求快速变化的外部情况。敏捷开发中的核心实践之一就是不断地审查,然后调整,这是在开发中学习、成长、调整和完善。推广软件敏捷开发模式正成为大势所趋,在这个过程中信息系统的“线上化”“自动化”“实时化”“快速化”优势与敏捷开发模式可以说是不谋而合。因此,利用信息化建立一套软件开发项目管理信息系统能够有效提升研发管理水平,为软件开发工作提供强有力的支撑。同时需要注意,要充分、及时、有效地利用软件开发过程中的反馈信息,提取有价值的改进信息,不断提升,不断总结,不断完善软件开发项目管理系统,使之发挥更大的效率,最终提升软件产品的质量水平。

猜你喜欢
信息化过程信息
月“睹”教育信息化
月“睹”教育信息化
幼儿教育信息化策略初探
描写具体 再现过程
临终是个怎样的过程
订阅信息
在这个学习的过程中收获最大的是哪些,为什么?
圆满的过程
展会信息
信息化是医改的重要支撑