董 曦,王 妍
(中国船舶重工集团公司第七二三研究所,江苏扬州 225101)
GJB 5000A二级认证过程中,需要设立多个软件过程改进组织机构。各组织机构按照角色职责要求,承担相应的工作任务,可以共同促进所组织的软件工程化水平的提高。其中,软件工程过程组是最为重要的组织机构之一,软件工程过程组能否正确、高效地完成组织赋予它的职能和工作,大大影响了整个GJB 5000A二级的推进工作[1]。
不同单位在推进GJB 5000A二级过程中会设立不同的组织机构,一般而言,会设立如下几个典型的工作小组:
1)领导小组。一般由单位高层领导作为组长,组员由各GJB 5000A推进过程中涉及到的部门领导为成员。主要职责是为软件过程改进工作提供必要的资源,协调、处理软件过程改进工作中各部门之间的统筹问题[2]。
2)软件工程过程组。一般由负责GJB 5000A推进工作的部门领导为组长,单位内各部门的软件工程专家、业务骨干为成员。主要负责策划、促进、跟踪和协调软件过程改进活动,定期评估单位软件过程能力。
3)软件配置控制委员会。负责监督、控制产品库的技术状态,批准软件产品的交付和使用,解决组织内共性技术状态的问题。
4)软件质量保证组。主要负责检查实施的软件过程和产生的软件产品是否符合要求,协调全单位所开展的软件质量保证活动,确保所有软件项目和相关部门按照制定出来符合标准的软件体系文件要求开展工作。
5)软件配置管理组。主要负责管理和维护单位软件受控库、产品库,并监督产品软件技术状态。
当然,不同的组织根据各自特点以及改进需要,还可以设立其他工作小组,比如软件测试组、软件培训组等。下文将就软件工程过程组进行展开讨论。
从定义来看,软件工程过程组实际上是一个组织中软件过程改进活动的任务发起者、任务的组织者和任务的终结者。具体职责如下:
1)负责制定、持续改进适合于本单位的软件过程管理体系文件并组织宣贯;
2)负责策划、促进、跟踪和协调软件过程改进活动,定期评估组织的软件过程能力;
3)负责组织过程资产收集、整理和确认;
4)负责收集、分析过程的改进建议,策划并组织实施过程的改进;
5)负责定义本单位的度量模型,收集数据、分析数据及通报数据,维护度量数据库,提供过程改进建议;
6)提供软件过程改进相关培训和咨询,审核组织级培训资料;
7)负责软件过程管理工具和软件测试工具的选型、维护、培训和技术支持;
8)组织开展软件开发方法学的研究,选择、评价新的过程、规程、方法和工具等[3]。
软件工程过程组除了上述基本职责外,应承担更高的使命,即推动整个组织硬实力和软实力的提升。
在依据GJB 5000A编制单位体系文件之初,软件工程过程组要放眼未来、放眼世界,充分吸收国内外先进软件企业的优秀实践经验,将最先进的工程和管理规范本地化,形成一套行业先进且兼具本地化特点的规章制度。通过GJB 5000A的推进,大胆改革,提高整个组织的运转效率。
软件过程改进的目的是提升组织的软件成熟度,其最终目的是使得整个组织、整个员工切身感受到通过软件过程改进这个活动带来的工作效率、研制能力、产品质量的提高。在软件研制能力不够成熟的阶段,组织对于资源的配置往往不够合理。优化不合理的各种组织结构,做到对资源的合理配置,从而提高效益,是软件工程过程组的重要使命。
在软件过程改进的前期,可能会通过考核、奖励等手段去推动软件的工程化进程,当然这也是需要的。但是软件工程过程组必须有长远的规划和清楚的定位,、以软件研制流程标准化、工程化为基础,最终在组织内形成一种自动自发的文化氛围。
激励即通过了解人的需要,激发人的内在动机,使其朝向所期望目标去努力的心理活动过程[4]。激励机制就是将激励过程文件化、制度化。软件工程过程组需要在编写单位体系文件之初,就从组织的目标出发,通过一定的制度来引发软件过程改进相关人员积极的动机和愿望,使相关人员从心态上愿意将软件改进工作做好,从行动上积极配合主动参与整个软件过程的改进活动。将一个激励机制完善,应该要做好:洞察被激励对象的需要、明确被激励对象的动机以及满足被激励对象的需要。
一般在GJB 5000A认证过程中,需要有试点项目和非试点项目。在投入资源有限的情况下,做好试点项目之间、试点项目和非试点项目之间的人、财、物的平衡尤为重要,要从大局出发,以完成组织的目标为中心,不能厚此薄彼、顾此失彼,要做好资源的合理调用。组织千万不能认为平衡机制是无关紧要的,一旦一个组织的平衡机制有问题,便会造成单位内部人心涣散、工作推进不力的情况出现。
引导机制即通过一系列的举措、行为和方法,使得被引导者的工作方向与引导者的设定方向相一致。简单来说,就是如何使组织通过GJB 5000A认证,并将提高整个组织的软件工程化水平目标转化为个人目标的过程[5]。这需要长期的文化影响,不是简单的一蹴而就的过程,是组织内全员从被动到主动、从量变到质变的升华。首先,软件开发人员可以逐步从测量分析的结果中看出整个单位软件水平的提高;反之,软件开发人员逐渐的以高水平的标准去要求自己,也将形成良性循环。
在软件工程化推进工作起步之时,将软件工程过程组设定在单位的强势部门确实有利于组织级的过程改进和试点项目的工程水平提高。强势部门对于大部分项目有计划权、考核权和分配权,在强势部门的有力推动下,可以减少推进阻力,从严、从快、从好地完成软件过程改进的设定目标。但此时的管理阶段还处于比较落后低下的水平,强势部门的意愿程度、介入程度很大程度上决定了整个改进过程的成败。
此时的管理阶段应该处于“法制”的阶段,即具体将软件工程过程组设定在哪个部门已不再重要。所有的软件工程行为有章可循、有文件可依。项目由项目经理和软件主管设计师推动,有序开展开发和测试活动,质量保证人员督查过程和产品的不符合项,使得项目符合单位的体系要求推进。在规章制度的约束下,软件研制必须按照计划、体系和标准往下走,自然符合GJB 5000A相应等级的要求,可通过认证。
在一个组织软件过程改进深入人心,且大家自觉自愿地接受软件工程化的思想后,单位须着力于软件文化的建设。例如,定期组织软件技术研讨、软件文化沙龙和软件知识竞赛等活动,产生良好的软件文化氛围并被大家接受与认可。值得注意的是,这不同于软件工程化知识的培训,文化建设更重要的在于全员重视、全员参与、全员热情。此时,软件工程的工作重点将不再局限于具体项目或者具体规章制度,甚至取消了考核,建设单位的软件文化和价值观。
软件工程过程组的能力高低以及是否能够较好地完成组织赋予的职责与使命,在很大程度上决定了组织软件工程化的水平。本文从软件工程过程组的基本职能出发,探讨了组织对软件工程过程组的要求、软件工程过程组赋予的使命、软件工程过程组在软件过程改进中采用的机制及其提高的阶段。与此同时,软件工程过程组的工作和要求绝非仅仅如此,在今后的工作中,还需更加深入地探索与实践,为组织软件工程化的改进提供帮助。