技术开发 频道

软件配置管理:纪律创造价值

【IT168 技术文章】

    我们的软件组织从起始一直到CMM5级的质量实践中,实施软件配置管理,并辅之以管理和工程技术手段,对我们武器系统的软件维护至关重要。本文阐述了配置管理如何通过建立和维护工程技术工作的连续性来为组织创造价值,同时也提供了如何建立强有力的配置管理体系,促进组织进步的相关经验。

    日文中有一个词“Kaizen”,指的是有纪律的持续改进。(“Kaizen”其实是汉字“改进”的日语发音,特指一种持续改进方法 —— 译者)例如对一条精良的自动化生产线不断地提高其生产能力,直到暴露问题,解决之后,再不断提高,如此往复。同时“Kaizen”要求每一个人参与其中,从经理到员工都不例外。

    “软件配置管理”(简称SCM)也是这样一种纪律,其目的同样是持续地改进软件开发过程,以期望得到高质量的软件产品。SCM通过对配置项(Configuration Item,简称CI)的计划,控制,审计和改进来实现整个软件产品周期中的有效管理。

    在早期的犹他州希尔空军基地软件工程分部(简称TIS),SCM并不是一种常用的术语。大多数工程师都知道SCM,但却并不重视它。SCM对他们来说意味着烦琐的过程和规程,而软件工程师们并不愿意被过程和文档工作所打扰。每个人或小组都有他们自己的做事方式,这使得完成的工作很少能够做到风格统一。但是,无论如何,大家还是希望开发高质量的软件,而且返工越少越好。

    基于这种提供高质量软件产品的渴望,我们仔细审视我们的工作方式,并寻找改进的方法。高级管理层最终选择了卡内基梅隆大学软件工程研究所的能力成熟度模型(Capability Maturity Model ,简称CMM ),并在初始的评估之后,开始了组织基于过程的改进。这一决定才真正将SCM作为开发高质量软件产品的关键过程引入到部门内部。为了成为一个CMM 等级2的组织,我们需要一套与管理软件项目相一致的方针。CMM 等级2所要求的内容包括:需求管理,软件项目策划,软件项目跟踪与监督,软件子合同管理,软件质量保证和SCM。

    在我们的实施中,SCM团队同时也肩负质量保证的责任,从而成为组织结构中的重要角色。这对于SCM团队是一项艰难的工作,部门中的许多人员不愿意改变,也不喜欢SCM将带来的额外工作,这意味着对每一行代码负责,意味着记录每个变更。

    在此之前,每个工程师负责自己的配置管理工作。现在需要建立一个独立的小组,为引入过程管理的项目提供质量保证和配置管理。

    这意味着需要遵守一个既严格又灵活的过程,说它严格是因为每个人要保持一致的做事方式,而说它灵活是因为每个项目要根据客户需求开发不同的产品。经过一段时间以后,SCM已经成为高质量软件的保证。打个比方,SCM就好像“胶水”一样,将各种方法和技术结合在一起,让组织能够开发出高质量的产品。

    开发“胶水”   

    在武器系统开发的各个阶段活动中,SCM扮演了重要角色,例如项目计划,管理进度和里程碑,进行配置项的标识等,这些工作贯穿于整个项目生命周期。通过建立基线,SCM定义软件开发的起始状态并记录演化细节。在生命周期的初始阶段就引入SCM,就如同将房屋建立在坚固的岩石上。SCM的严格实施为软件开发和维护工作的完成奠定了坚实的基础。

    在武器系统维护的阶段活动中,SCM活动的纪律性可以增强团队的能力并维护工作的一致性。现在仅仅凭借几条简单的公认准则和指南来开发已经不合时宜。定义一个结构清晰的过程并加以贯彻成为必需。实施SCM要求建立贯穿整个产品生命周期的配置项控制和审计过程,通过这些过程,产品的质量和一致性得到了保证和维护,并且有人为其负责。

    在项目定义阶段,SCM具有整合的功能,记录在项目定义阶段的相关信息。SCM通过跟踪每个软件活动对后续开发阶段提供支持,用可再现的审计和数据控制建立产品内在的一致性和质量。SCM建立成本的可跟踪的度量,审计产品不足,产品可重现的能力,为我们组织中产品提供了增值的功能。它确保每个需求,问题,活动项等被跟踪直到关闭,相关的度量数据得到更新。

    在项目的定义阶段,SCM的职责包括排定日程、参加会议并记录相关信息。在产品的维护阶段,通过规范的审计和数据控制以及对软件开发活动的仔细追踪,来保证产品的质量和一致性。同时,我们也对SCM活动进行度量,追踪成本,发现弱点,并考察其从灾害中恢复的能力,确保其能够为组织活动增值。SCM确保每个需求,问题,活动项等被跟踪直到关闭,相关的度量数据得到更新。

    SCM还负责维护配置状态报告(简称CSA),提供需求符合度,成本控制,源代码行数等信息。报告数据用作项目管理评审等活动的输入信息,为组织作出正确的决策提供依据。无论是过去、现在、还是将来,SCM无论在工作流数据管理,还是在产品的整个生命周期的维护中,始终为我们的项目提供了重要支持。

    生命周期过程

    在我们的组织中,通过计划,标识,控制和审计工作过程的活动,SCM实现了对产品生命周期的定义,实施和管理的功能。具有定义良好的过程使我们能适应新的软硬件的开发任务。

    实践表明,通过对正式的CM过程的裁剪使之适合每个项目的需求,对组织是非常有益的一件事。这个方法使得每个项目不必刻板地和组织规程保持一致;取而代之的是,项目可以根据实际情况有一定的灵活性。当每个项目建立的配置规程既能与组织的过程一致,又能满足各自的需求时,会对项目发挥最大的作用。下面是SCM工作过程的概要介绍:

    策划:管理上软件配置管理规范配合用于建立和维护配置计划和项目计划,这些计划定义了项目的活动和交付物。计划中还包括项目生命周期中采用的过程和规程。SCM用于参与和记录项目方向,进度,变更请求,同行评审活动以及配置控制委员会(简称CCB)的活动。CCB负责定义项目的里程碑,交付工件以及成本和进度。

    在我们的组织中,CCB在开始定义需求、进度和交付物之前已经存在,这些要求将在项目约束和需求文档中进行说明。经过正式签署的文档代表了组织与客户之间就项目的里程碑和交付物达成的约定。之后文档纳入配置管理,并在项目的生命周期中作为参考,当文档的内容发生变化时将被重新评审。

    标识:在完成了上层的计划后,SCM将建立CSA数据库,开始识别配置项和生命周期变更度量的收集工作。通过获取已标识的工作产品的度量数据,SCM为管理层和工程提供必须的数据帮助作出明智的决策,这已成为等级5中组织持续过程改进的核心。

    SCM团队和项目经理一起识别项目的配置项。建立工作产品和它们相关的数据管理对象的跟踪,保证项目策划阶段被批准的需求在修改中的一致性,这要求当工程变更,系统设计变更,子系统设计变更,软件变更,代码变更时,跟踪工作产品的建立,维护和关闭状态。这样数据库可以提供有关的累计变更情况。

    我们组织采用CSA系统记录各种度量,比如实际耗费的人时、每个变更请求产生的代码行等。这些实际度量的数据放入组织的资产库,可以用于新项目参考历史时使用。图一是一个项目报告的例子,内容包括项目标识,项目名称,项目人员,人时,代码行和其他项目开发需要的信息。我们还有其他的报告,可以显示项目的状态,完成百分比和其他有价值的度量。

 

    图一 项目报告示例

0
相关文章