我们发现很多开发者都经常看看这个页面,因为它让他们看到项目发展的方向,看到随着人们不断归还代码而发生的变化。有时我们也会在这个页面上放一些其他的项目新闻,但是需要把握好尺度。
要让开发者能在自己的本地机器上模拟主创建过程,这是很重要的。这样,如果集成错误出现了,开发者可以在自己的机器上研究、调试,而不必真的执行主创建过程。而且,开发者也可以在归还代码之前先在本地执行创建,从而降低了主创建失败的可能性。
这里有一个比较重要的问题:主创建应该是干净的创建(完全从源代码开始)还是增量创建?增量创建会快得多,但是也增大了引入错误的风险,因为有些部分是没有编译的。而且我们还有无法重新创建的风险。我们的创建速度相当快(20万行代码约15分钟),所以我们乐于每次都做干净的创建。但是,有些团队喜欢在大多数时候做增量创建,但是当那些奇怪的问题突然出现时,也经常性地做干净的创建(至少每天一次)。
图1:运行在投石车上的servlet
代码归还(Check in)
使用自动化创建就意味着开发者应该遵循某种节奏来开发软件,最重要的就是他们应该经常集成。我们曾经见过一些组织,他们也做日创建,但是其中的开发者却不经常归还代码。如果开发者几周才归还一次代码,那么日创建又有什么意义呢?我们遵循的原则是:每个开发者至少每天要归还一次代码。
在开始新的任务之前,开发者应该首先与配置管理系统同步。也就是说,他们应该首先更新本地机器上的源代码。在旧的代码基础上编写代码,这只会带来麻烦和混乱。
然后,开发者要随时保持文件的更新。开发者可以在一段任务完成之后将代码集成到整个系统中,也可以在任务的中途集成,但是在集成的时候必须保证所有的测试都能通过。 [Page]
集成的第一步是要再次使开发者的本地文件与代码仓库同步。代码仓库中所有新近有改动的文件都要拷贝到开发者的工作目录中来,当文件发生冲突时,配置管理系统会向开发者提出警告。然后,开发者需要对同步后的工作集进行创建,对这些文件运行BVT,并得到正确的结果。
现在,开发者可以把新的文件提交到代码仓库中。提交完成之后,开发者就需要等待主创建。如果主创建成功,那么这次归还也是成功的。如果主创建失败了,开发者可以在本地修改。如果修改很简单,就可以直接提交;如果修改比较复杂,开发者就需要放弃这次修改,重新同步自己的工作目录,然后继续在本地开发、调试,然后再次提交。
某些系统强制要求归还进程逐个进行。在这种情况下,系统中会有一个创建令牌,同一时间只有一个开发者能拿到令牌。开发者获取创建令牌,再次同步文件,提交修改,然后释放令牌。这就确保创建过程中,最多只能有一个开发者在更新代码仓库。不过我们发现,即使没有创建令牌,我们也很少遇到麻烦,所以我们也不用这种方法。经常会有多个人同时向同一个主创建提交代码的情况,但是这很少造成创建失败,而且这样的错误也很容易修复。
同时,我们还让开发者自己来决定归还过程中的小心程度。这反映出开发者对集成错误出现几率的评估。如果她觉得很有可能出现集成错误,那么她就会在归还之前先做一次本地创建;如果她觉得根本不可能出现集成错误,那么她可以直接归还。如果犯了错误,在主创建运行时她立刻就会发现,然后她就必须放弃自己的修改,找到出错的地方。如果错误很容易发现、很容易修补,那么这种错误也是可以接受的。
总结
发展一个制度严密的自动化创建过程对于项目的控制是很重要的。许多软件先贤都这样说,但是我们发现,这样的过程在软件开发领域中仍然罕见。
关键是要让所有的事情都完全自动化,并且要经常进行集成,这样才能尽快发现错误。然后,人们可以随时修改需要修改的东西,因为他们知道:如果他们做的修改引起了集成错误,那也是很容易发现和修补的。一旦获得了这些利益,你会发现自己再也无法放下它们。
分享到:
相关推荐
标题“综合论述SSH的优缺点”指的是对Secure Shell(SSH)协议的全面分析,包括它的优点和不足。SSH是一种网络协议,用于安全地远程登录到服务器,执行命令,传输数据,以及在不安全的网络环境中提供加密通信。SSH...
对于计算机案例研究,可以对比分析bk-ci与其他同类工具(如Jenkins、Travis CI)的优缺点,或者探讨其在特定行业的应用情况和效果。模板建站则可能涉及如何利用bk-ci快速搭建和部署网站项目。 总的来说,bk-ci蓝鲸...
### 软件工程中的测试自动化与持续集成 #### 第一章:软件工程中的测试自动化与持续集成 **软件测试的重要性** 软件测试是确保软件质量和可靠性的关键步骤。通过全面而深入的测试,可以在软件发布前发现并修复...
案例分析可能揭示了在实际操作中如何权衡不同技术的优缺点,以及如何设计出可扩展、可维护的系统架构。 实施阶段通常包括设备采购、安装调试和系统测试。在这一环节,案例可能详细描述了如何进行硬件部署、软件安装...
4. **自动化部署**:结合 GitHub Actions、Travis CI 等持续集成/持续部署(CI/CD)工具,实现自动化构建、测试和部署。这不仅提高了开发效率,还确保了软件质量的一致性和可靠性。 5. **社区参与**:积极参与 ...
4. **定制和集成**:不同的企业有不同的需求,系统可能需要定制或与其他业务系统集成,这可能带来复杂性和额外成本。 5. **持续维护和升级**:CRM系统需要持续的维护和升级,以应对市场变化和技术进步,这也是一项...
OA厂商众多,各有优缺点,选择合适的OA系统对于企业的数字化转型至关重要。以下是对一些常见OA厂商的详细分析: 1. 泛微(www.weaver.com) 泛微采用J2EE开发技术,拥有强大的市场地位和理念,其产品功能齐全,品牌...
6. **可持续性分析:** 可进行能源效率、环境影响等分析,促进绿色建筑的发展。 7. **施工模拟:** 可以模拟施工过程,优化施工计划。 **BIM软件的缺点:** 1. **学习曲线陡峭:** 对用户的技术要求较高,需要专门...
作为中国网络卖家和购物者的首选平台,淘宝网凭借其独特的战略和产品特性,成功地构建了一个全面的商业生态系统。 淘宝网的战略定位是电子商务基础服务提供商,它的市场策略主要针对卖家和买家。对卖家,淘宝采取...
综上所述,淘宝网通过其全面的产品策略和优秀的交易保障制度,成功地建立了中国最大的网络零售市场,吸引了大量买家和卖家,并持续推动着中国电子商务的发展。同时,其开放的API也为第三方开发者提供了创新和拓展...
每种模型都有其适用场景与优缺点,文章中简要介绍了这些模型的基本概念及其在项目管理中的应用。 - **知识点五:沟通管理** 沟通管理对于项目的成功同样至关重要。有效的沟通能够确保团队成员之间信息的准确传递...
7. 集成电路制造行业投资战略的类型与选择:报告详细讨论了企业在投资战略中的各种选择,包括重点投资战略、稳定型投资战略和紧缩型投资战略,并分析了其优缺点。 8. 投资战略选择的原则与注意事项:报告探讨了企业...
4. 测试策略与方法:讨论如何选择合适的测试模式,包括边界扫描测试、功能测试、静态时序分析等,并分析不同测试方法的优缺点。 5. 故障模型和检测覆盖率:介绍常见的故障类型,如短路、开路、参数漂移等,以及如何...
本报告基于社交媒体的内涵、特点、优缺点,从营销概念和特点出发,结合微信营销案例,分析了社交媒体营销的具体应用和传播策略,包括品牌展示、客户维护、业绩提升、服务改善和形象宣传。而传播策略方面则着重于情感...
集成背板的材料选择通常包括聚氟乙烯(Teflon)、聚酯(PET)、聚酰胺(PA)和氟化乙丙烯(FEP)等,这些材料各有优缺点,选择时需根据实际应用环境和成本考虑。 此外,集成背板的设计也至关重要,包括背板的厚度、...
- **典型架构**:如客户端/服务器架构、分层架构、微服务架构等,每种架构都有其适用场景和优缺点。 - **软件架构设计方法**:包括自顶向下、自底向上、基于模式的设计等,选择合适的方法对于构建稳定可靠的系统至关...
在软件研发业务部分(问题8-9),调查问卷关注了软件产品的来源渠道和质量评价,这有助于企业了解产品推广的有效途径以及产品本身的优缺点,以便优化产品开发和市场营销策略。 综上所述,这份调查问卷旨在全面评估...
它包括系统开发审计、数据中心和网络通信设施的结构审计、支持其他审计工作、提供增值服务、灾难恢复和业务持续计划审计、系统安全审计、网站信息审计、全面控制审计、系统运营效能审计、投资回报率审计以及供应商...
8. **JavaEE标准接口集成**:预留了WebService、JCA、JMS等JavaEE标准接口,使得jBPM能够轻松地与标准JavaEE程序集成,增强了系统的互操作性。 9. **跨平台能力**:作为完全的Java工作流引擎,jBPM可以无缝移植到...