软件配置管理

软件配置管理(Software configuration management,SCM)

目录

  • 1 什么是软件配置管理
  • 2 配置管理的任务
  • 3 实施软件配置管理的优点
  • 4 配置软件管理实施的流程
  • 5 软件配置管理与CMMI
  • 6 软件配置管理案例分析
    • 6.1 案例一:配置管理在软件企业中的应用[1]

什么是软件配置管理

  软件配置管理(SCM)是指在开发过程中各阶段,管理计算机程序演变的学科,它作为软件工程的关键元素。已经成为软件开发和维护的重要组成部分。SCM提供了结构化的、有序化的、产品化的管理软件工程的方法。它涵盖了软件生命周期的所有领域并影响所有数据和过程。

  配置管理是对产品进行标识、存储和控制,以维护其完整性、可追溯性以及正确性的学科。

配置管理的任务

  配置管理的任务如下图所示:

  (1)定义配置项:软件配置项(SCI)即软件配置管理的对象。软件开发过程中产生的所有信息构成软件配置,它们是:代码(源代码、目标代码)以及数据结构(内部数据、外部数据)、文档(技术文档、管理文档、需方文档)、报告,其中每一项称为配置项,软件配置项是配置管理的基本单位。同时,开发过程中使用的环境,如操作系统、各种支撑软件、配置管理工具,也可纳入软件配置管理范围。

  (2)标识配置项:正确标识软件配置项对整个管理活动非常重要,对软件开发过程中的所有软件项目赋予唯一的标识符,便于对其进行状态控制和管理。

  配置标识包括:文档标识、代码标识、运行文件标识。

  典型的命名规则是RUP法。

  (3)定义基线:基线标志着软件开发过程一个阶段的结束,任一软件配置项,一旦形成文档并审议通过,即成为基线。基本的作用在于把各阶段的工作划分得更明确,使本来连续的工作在这些点上断开,以便检验和肯定阶段成果。

  (4)定义软件配置库:软件配置库内容因涵盖开发的全过程,应包括如表所示的软件项:

  表 软件开发过程与软件配置库

模型、文档库代码库运行库
软件分析设计软件实现软件运行
软件分析设计模型源代码可执行代码
软件分析设计文档目标代码使用数据
测试数据
软件开发环境软件运行环境

  基线技术将项目实施配置管理的存储库分为3类:开发库、受控库、产品库。

  ①开发库:存放在开发过程中按照要求生成的各种技术文档、源代码、可执行代码和使用的数据,为开发人员的活动提供支持。

  ② 受控库:存放基线产品即项目转阶段经评审通过的和已经批准的软件工作产品和软件产品。

  ③产品库:存放项目正式交付用户的最终产品和最终运行环境。

  (5)控制配置:配置控制的定义是为了明确配置管理在具体实现时所执行的配置规程,主要包括入库控制和变更控制。

  (6)配置审计:包含了物理和功能上的审计。包括以下活动:① 验证每个软件配置项的正确性、一致性、完备性、有效性、可追踪性;② 在软件生存期内应定期配置审计工作;③定期进行软件备份,应保证备份介质的安全性和可用性。

  (7)配置状态报告:提供软件开发过程的历史记录,内容包括配置管理项的现行状态及何时因何故发生了何事(入库、更动)。配置管理人员应定期或在需要时提交配置状态报告。配置状态报告包含了整个软件生命周期中对基线所有变更的可追踪性。

实施软件配置管理的优点

配置软件管理实施的流程

  1.规划、调整网络开发环境

  一个规划良好的开发环境,是实施配置管理系统的前提。此阶段要对配置管理系统做出规划,主要考虑以下问题:

  2.设计配置管理库

  根据项目开发的要求,设计开发资源的存储模式,良好的存储模式有利于减轻管理上的负担,增强配置管理库的访问性能,同时便于控制访问权限,保护软件资产。

  3.定义配置管理系统的角色

  需要确定与配置管理相关的所有角色,包括他们的相应的活动。在开发过程中,一个开发人员可能兼任多种角色,但一项任务在同一时刻只能由一个角色来执行。

  一般配置管理中的角色主要包括:

  4.制定配置管理流程

  配置管理实施的一个重要阶段,主要目的是根据项目开发的需要,制定相应的配置管理流程,以更好地支持开发,主要活动包括:

  5.相关人员的培训

  实施配置管理系统,相关人员需要接受培训:

软件配置管理与CMMI

  能力成熟度集成模型(Capability Maturity Model Integration)是由美国卡耐基·梅隆大学的软件工程研究所(SEI)组织开发,并于2002年发布的一种规范、实用的途径来管理软件过程的模型.CMMI通过指导软件开发人员的活动来改进软件过程,以达到软件过程可复用性、可定量管理、可有效控制的目的.软件配置管理是CMMI可重复级的一个关键过程域(Key Process Area,KPA),其目的是在整个项目的软件生命周期中,保持软件产品的完整性和可追踪性,这包含了对改变的控制和所有能影响到改变的软件因素的管理.作为过程实现、过程优化的一部分,配置管理是实现软件过程的基本保证,它还是基于重用的软件开发的管理手段,所以成为软件过程管理的核心.CMMI模型清晰地描述了SCM,并说明了SCM 的目的和所要达到的目标,具体描述了某级成熟度下软件过程在该方面所应达到的一组目标和实现这些目标的一组关键实践(Key Pradice).这些关键实践被划分为5类,分别为完成该组目标所需的承诺、执行能力、执行的活动、度量分析以及验证.使企业在实施软件配置管理时能知道到底要做什么,团队的配置管理现状如何评估,在哪些方面还可以进行改进等问题能得到具体的答案。

软件配置管理案例分析

案例一:配置管理在软件企业中的应用

  软件配置管理,对从事软件的人来说, 并不陌生。要想真正做到实施好配置管理,对于软件配置管理的意义及其重要性有必要进行认识和理解。软件配置管理是软件项目管理的重要内容,也是保证软件质量的重要手段。它能够对软件开发过程进行有效管理和控制, 目的是实现软件产品的完整性、一致性、可控性,使产品极大程度地与用户需求相吻合 它能够控制、记录、追踪对软件的修改并形成规范文档,方便日后维护和升级, 更重要的是能够保护代码资源,积累软件财富,提高软件重用率。

  一、软件配置管理存在的问题

  很多软件企业在日常的开发工作中遇到的问题都是因缺少规范的管理造成的。

  而发生这些问题需要我们花费很大的精力与时间来处理,而且有很多是重复的问题,有的是不必要的麻烦。

  1.文档和代码管理不善。

  我们知道开发一项软件产品, 其代码的可重用性相当高,但如果没有良好的配置管理流程,软件复用的效率将大幅降低, 比如对于复用的代码进行了必要的修改或改进,却只能通过手工将变更传递给所有复用该软件的项目,效率之低可想而知。另外开发过程形成的文档和代码等缺乏统一管理, 随意的保存往往会因为硬件故障或人员的离职而消失, 而各个开发人员编写的代码的风格迥异, 编码和设计脱节,也往往会导致重复开发、难以维护。

  2.项目的进度状况不明确

  软件工程思想指出越早发现缺陷和风险,采取相应措施的代价越小。然而由于缺乏配置管理的支持,部门主管及项目经理无法确切得知各个开发人员的具体工作,项目进展随意性很大,不能适时适度管理。问题往往会集中到项目里程碑时出现,开发人员为在期限内完成任务,只能敷衍了事,容忍部分缺陷存在,给后期施工留下隐患,造成无休止的维护。

  3.并行开发的手段缺乏

  在开发工作中,经常会出现并行开发的情况,并行开发能够有效提高开发效率。例如:一个项目可能在开发新版本的同时维护前一版本,或者需要针对不同客户进行定制修改。但并行开发在分支及合并时往往会衍生出很多麻烦,如果没有配置管理工具的支持,进行并行开发将十分困难,往往会造成修改过的bug 重复出现或者若干人进行相同的工作, 产生不必要的浪费,这样也会对开发的管理及代码的质量带来影响。

  4.测试工作开展的不规范

  国内很多企业已经认识到配置管理和软件测试的重要性,缺乏合理管理的软件测试只是形式主义。传统开发模式的弊端使得测试工作无法起到测试应有的作用,测试结果无法量化更无法考核。开发人员将精力耗费在如何应付测试,而测试人员单凳主观意愿进行测试, 走走过场,使得这一环节形同虚设, 当然就无法对以后的开发工作起指导作用。

  二、软件配置管理在企业中的应用

  我国目前的软件行业主要还是由中小型团队组成,相对应国家水平存在着严重的开发过程混乱,缺乏有效的过程管理手段,而软件配置管理是一套规范、高效的软件开发管理方法,同时也是提高软件质量的重要手段。配置管理由于其本身实施的便利性、工具的支持性以及与其他过程域良好的连接性,正符合企业的管理需求。软件配置管理可以帮助开发团队对软件开发过程进行有效的变更控制,高效地开发高质量的软件,从而达到提高软件生产质量这一根本任务,它有机地把其他支持活动结合起来, 形成一个整体, 相互促进,相互影响,配置管理为了实现控制变更, 高效、有序的存放、查找和利用软件开发信息, 为达到这一目的, 首先我们需要完成以下几个主要功能域:配置标识、版本控制、变更管理、配置审核和状态报告。下面本文就其中3个功能域进行阐述:

  1.配置标识

  软件配置标识就是对每个软件配置项的标识。 对一个软件项目而言,它的配置项有以下内容:需求分析文档、概要设计文档、详细设计文档、源代码、测试文档、客户文档等。

  而对这么多需要存储的重要的文档和代码,软件配置管理工作的第一步就是建立一个安全、可靠的知识库,用于保存开发过程中产生的软件资产。在建好知识库后,首先要明确项目生命周期内所产生的各类文档和代码,然后确定其名称和标识规则。根据实际需要,将正式文档、模型文件、源代码等文件按照各自标识规则分门别类放入库中, 而对于临时文档、编译时产生的中间文件等,则不需将它们放入库中。原则是保证配置管理工具检索便利,让项目组成员容易记住标识规则, 同时要确保组织一级的标识规则的一致性。

  2.变更管理

  在软件配置管理中, 由于软件的可变性,变更管理成为一个难点,并且变更涉及的范围很广,各种因素都会引起变更,如市场的变化、技术的进步、客户对于项目认识的深入等等,都可能导致软件开发过程中变更的提出。如果缺乏对于变更的有效的管理能力,纷至沓来的变更就会成为开发团队的困扰。

  实施高效的变更管理至少应该包括两个部分:“定义合理的变更管理流程”、“采用自动化工具作为支持”。在具体的实践中,变更管理的复杂程度与变更的具体类型有关。应该对变更进行分类和分层,既保证项目组成员有一定的自主权,又不会耽误高层经理对关键问题的把握。通常变更管理的流程会涉及到变更提交、变更复审、变更任务分配、变更结果验证等一系列活动。

  3.配置审核

  配置审核包括配置管理活动审核和基线审核。配置管理活动审核用于确保项目组成员的所有配置管理活动,遵循已批准的软件配置管理方针和规程,实施基线审核,要保证基线化软件工作产品的完整性和一致性, 并且满足其功能要求。基线的完整性可从以下几个方面考虑:基线库是否包括所有计划纳入的配置项?基线库中配置项自身的内容是否完整? 此外, 对于代码,要根据代码清单检查是否所有源文件都已存在于基线库。同时,还要编译所有的源文件, 检查是否可产生最终产品 一致性主要考察需求与设计以及设计与代码的一致关系, 尤其在有变更发生时,要检查所有受影响的部分是否都做了相应的变更。审核发现的不符合项要进行记录,并跟踪直到解决。在实际操作过程中,一般认为审核是一种事后活动, 很容易被忽视。但是“事后”也是有相对性的,在项目初期审核发现的问题,对项目后期工作总是有指导和参考价值的。

  软件配置管理活动在整个开发活动中是一项支持性、保障性的工作,实施之前还应该对所有开发人员进行软件配置管理方面的培训。通过软件配置管理的实施,除了可以给企业带来效益, 还会对使用配置管理的每个人有所收益: 学习先进的软件过程管理思想,培养良好的团队合作精神,提高个人专业水平,增强自身的竞争力等。

阅读数:210