《配置管理最佳实践》——第1章 源代码管理 1.1为什么源代码管理如此重要

第I部分 配置管理核心实践

第1章 源代码管理

源代码管理是保护组装成系统的所有工件(artifact)的学科。源代码管理是配置管理的核心职能(function),直接影响着团队的生产力和产品质量。不幸的是,很多公司并没有意识到建立高效源代码管理机制的重要性,缺乏实施源代码管理的能力,缺少源代码管理工具和流程。这一章将讨论如何正确地进行源代码管理。我曾经负责过多家分布全球的大公司的源代码管理工作。源代码管理必须确保产品发布的源代码永远都不能丢失。源代码需要通过一种灵活和创新的方式进行管理。每个公司的情况都是不同的,所以常常需要针对不同的开发团队采用不同的源代码管理方法。但是不同的开发团队之间也是有共性的,我们更要关注那些共性,关注那些满足团队最本质需求的方面。源代码管理通常为配置管理的其他方面提供了基础支持,尤其是在构建工程、发布管理和部署方面。

这一章总体介绍了源代码管理的很多方面,包括目标、原则和基本概念。大部分配置管理的相关职能都是以源代码库为基础的,包括构建工程、发布管理和部署,这些知识可以帮助你从整体结构上理解本章内容。本章首先列举了我和同事的几个实例,然后讲述了如何实行源代码管理,包括赢得管理层的支持。接下来,从基线以及创建配置管理时间机器1(CM time machine)来讲一些源代码管理的核心概念。和源代码密切相关的是缺陷和需求跟踪,这通常会与源代码管理工具和流程集成到一起。接着讨论了通过对源代码管理进行分布式开发。无论是一个大团队还是小团队,都应该考虑采用合适的工具来支持开发团队的工作。在这里我列出了几个常规的指导原则,主要涉及如何选择正确的源代码管理工具、如何通过API来扩展它,以及一些不要过度工程化源代码管理方案的提示。即便质量是“免费的”,但是想做好配置管理的工作仍然需要资金的支持,尤其是考虑到一些培训的需求。与其紧密相关的是定义一个满足团队需求的配置管理工具使用模型。我们也会讨论在实施源代码管理和建立源代码管理过程中可能遇到的风险。最后,我分享了如何对待一些配置管理工具的高级用户。

1.1 为什么源代码管理如此重要

源代码管理之所以如此重要是因为既要保证资产是安全的,又要允许通过受控、可靠的配置库对其进行访问。源代码管理提供了管理源代码和把工件组装成系统的工具和方法。在配置管理术语中,我们称其为配置项(CI, Configuration Item)。所有开发团队都需要识别和控制配置项。源代码管理是公司开始实施软件配置管理的开端。良好的源代码管理可以让你一边处理长期的开发任务,一边快速发布紧急补丁。敏捷和精益的源代码管理非常重要,它为很多其他依赖有效源代码管理的工作奠定了基础。另外一个需要考虑的问题是,如果没有实行有效的(可重复的)源代码管理过程,很多糟糕的事情就会发生,包括开发中的重大中断、不必要的缺陷和大量的重复工作所浪费的时间。
当糟糕的事情发生的时候

当糟糕的事情发生的时候,我的手机铃声就会响起。于是我总结了一条,当一切进展顺利的时候,是没有人会打给我的;经常是当人们遇到问题需要帮助的时候,就会打给我;而通常是在重大问题造成源代码丢失或者其他问题的时候,就会立刻打给我。这本身可能就是我工作最好的一部分,因为它可以让我看到自己的工作在软件开发中有着显著的积极影响。这里首先需要了解的是为什么糟糕的事情会发生。源代码经常会因为下面的原因而丢失:

  • 源代码管理工具和流程缺失
  • 采用了不可靠的工具
  • 用户没有经过培训,所以即便是最好的工具也不能帮助他们
  • 聊胜于无的发布和部署过程
  • 复杂的分支导致用户犯错
  • 沟通不畅和团队合作很差
  • 灵活部分太多导致复杂性
  • 源代码管理工具缺少有效的行政管理过程的支持

我曾经在大公司中处理过上边说到的每一个问题。也曾经在源代码管理问题可能会导致损失数百万美元,甚至是灾难性事件(比如飞机相撞)发生这样的公司工作过。虽然很多同事都肯定规范的源代码管理带来的价值,但事实是很多人并不这么认为。经常遇到很多经验丰富的技术专家却对源代码管理最佳实践一无所知。我曾经在一些大型金融服务公司工作,在那里负责公司级源代码管理实施。虽然作为配置管理的狂热分子推广最佳实践是我的工作,但是想得到高级管理人员的认可并支持我的工作却是一项挑战。

时间: 2024-11-10 01:01:01

《配置管理最佳实践》——第1章 源代码管理 1.1为什么源代码管理如此重要的相关文章

《配置管理最佳实践》——导读

** 前言 **配置管理(CM,Configuration Management)在任何开发工作中都起着非常关键的作用.我从事配置管理的实施和支持工作已经超过25年,本书中将讨论的大部分内容都直接来自于个人的经验.我实施并支持过各种配置管理的实践方法并达到这样一种状态--如果建立的过程或自动化没有按照预期般运作的话,我经常会在半夜里被惊醒.作为一名教师,我向超过九百多的专业技术人员传授过工业级的配置管理工具(同样,他们在成功地完成课程后都得到了我家的电话号码,这样如果我没有教授好知识和技能,即使

《配置管理最佳实践》——1.2 从哪里开始

1.2 从哪里开始 实施源代码管理最好的切入点是确定源代码管理的目标和需求.我曾经工作过的一些公司,有的是集中全公司的资源来做好配置管理:而有的则是源代码管理几乎处于自我管理的状态.大多数公司开始做都是先评估其现有的做法,如确保代码安全.控制变更.建立基线和发布,包括修复补丁.当我们进行评估时,一定要确保现有的实践和进行改进的领域是依然可以工作的.采用一种平稳渐进的改进方式可以帮助避免来自团队的抵制,并且使他们在别人审视自己团队长处和短处时感觉比较舒适.我推荐敏捷和精益的做法.例如,只进行可以让

《配置管理最佳实践》——1.13 结论

1.13  结论 源代码管理是配置管理最佳实践的核心.在保护源代码的同时,利用配置管理工具和规范可提高工作效率和产品质量.在选择源代码管理工具和购买某些源代码管理功能时,一定要小心行事.培训和定义良好的使用模型有助于确保配置管理职能有效地执行且容易被接受.认真对待特殊的需求和满足这种需求时可能发生的风险.支持愿意深入了解源代码管理的人,鼓励他们分享自己的经验.源代码管理是一项团队活动.如果开发人员愿意去学习和分享配置管理最佳实践,源代码管理流程就会更加高效.

《配置管理最佳实践》——1.8 培训

1.8 培训 在选择源代码管理工具时,还要考虑供应商或者第三方机构是否有系统性的培训.有时我更倾向于那些非供应商提供的培训,因为我希望从一个没有偏见的角度去了解如何有效地使用工具,尤其是涉及工具缺陷和限制等.供应商有时认为培训只是销售过程的延伸,所以他们的培训总有种推销的味道,不能让人从公正的角度去看工具.我曾经参加过一个培训,这位讲师以前就是在供应商处工作,并且自己确实写了一些代码.他直率地讲了以前代码的一些错误,这些错误很多时候都是由于公司没有给他足够时间导致的,因为那时的首要任务是向外声称

《配置管理最佳实践》——1.12 高级特性和授权高级用户

1.12 高级特性和授权高级用户 配置管理最佳实践很多专业技术人员是源代码管理工具和规范的高级用户,而另外一些人仅仅期望以最少的精力把工作做完就可以了.团队中的每个人并非都要成为一个源代码管理工具专家,但应该认可和授权那些在源代码管理方面想提高的用户.我从同事那里学到很多经验,所以鼓励你授权给那些认真对待配置管理最佳实践且愿意分享所学的专业技术人员.良好的配置管理经验是会传播的,配置管理员应该努力宣扬和弘扬这种传播.

《配置管理最佳实践》——2.10 建立构建过程

2.10 建立构建过程 实施构建工程最佳实践是一项非常具有挑战性的工作.构建工程师可以选择有益于公司的实践:也可以选择最好的工具去建立可重复的构建,实施持续集成.但是实际工作远不止此,构建工程部门还需要为开发团队提供培训和技术支持.我的经验是和研发团队合作,解决构建和部署过程中的问题,然后转到幕后做支持,把日常的工作还交给开发团队来负责.这里有个前提就是公司的合规部门允许这样做.曾经一家实施 SAS-70的公司认为可以接受这样的做法:但是另外一家公司认为这不合规,不能接受.在一些公司里因为合规的

《配置管理最佳实践》——1.3 源代码管理核心概念

1.3 源代码管理核心概念 就像其他学科一样,源代码管理也有它自己的术语.可能你以前从其他一些配置管理人员那里听到一些技术行话却百思不得其解,读过这一章你就不会再对这些术语感到陌生了.这一章将会帮助你理解这些核心概念.理解了这些概念对理解源代码管理最佳实践也是非常有帮助的. 1.3.1 建立基线和时间机器许多开发者认为源代码管理就是简单地从源代码管理工具中(一个代码库)签入和签出代码.就像大多数人认为的那样,多年前一些比较老的版本管理系统的确是这个样子.如今,虽然大多数配置管理代码库具备的可靠性

《配置管理最佳实践》——第2章 构建工程 2.1为什么构建工程如此重要

第2章 构建工程 构建工程是高效地把源代码生成二进制文件的学科.构建工程可以很简单,例如仅仅执行一下 Makefile 或者 Ant 脚本:也可以很复杂,比如写一个完整的支持底层技术架构的构建框架.在本章中,我们将会讨论构建工程中遇到的挑战.构建工程的核心技术,以及一些选择合适构建工具的方法.我们也会讨论如何挑选和培养构建工程师.如果公司里现在没有一个合格的构建工程师,建议利用已有的资源去完成现在的工作.配置管理中构建工程是最具挑战性和最有意义的角色. 本章全面介绍了构建工程的方方面面,包括目标

《配置管理最佳实践》——1.5 管理全球分布式开发团队

1.5 管理全球分布式开发团队 源代码管理可以帮助协调分布式开发团队之间的工作.如图1.7所示,在伦敦.纽约和孟买有三个开发团队,源代码最佳实践可以有条理有逻辑地帮助协调每个人的工作. 在地理分布式的工作环境中,全球性软件开发的挑战是能够协调好工作和使变更受控.对于同一房间里坐在对面的两个人,协调好工作和使变更受控都不是件很容易的事情,而对于那些身处不同国家,工作在不同时区,有着不同语言.文化.追求的团队来说,这就更难了. 源代码管理可以在各自的分支上帮助组织这些工作,使其可以在一个地方被完成,