`
- 浏览:
50740 次
- 来自:
...
-
粗略翻了一遍jolt大奖书籍《持续集成:软件质量改进和风险降低之道》,发现基本原则和我前面在做的并无差别,不过对方显然是百试不爽经验丰富,我在具体操作的过程中却停下了无数次,按照阳明先生的话来说,不能实践的知,实在不是真知,结合自己的认识,把读书后获得的一点小的总结放到后面,用来逐步改善自己的工作。
实现持续集成的第一个要点,简言之就是需要实现“一键构建”,展开来说那就是“在任何情况下,都能根据需要,从指定的服务上获得无二义性的一份材料来顺利完成这个构建过程”。这个讲起来有点抽象,不过拆开分为几层意思来说就明了了,要获得无二义性的构建材料,包括代码、配置等,那么肯定就需要版本管理工具的介入了,如集中式管理代码的svn,分布式管理代码的git,都是这类工具中的翘楚;获得了可靠的素材,构建还需要隔离环境或者配置变化带来的伤害,比如在开发者自己机器上运作构建,而不能运行到服务器上,那么就不是好的构建,这个时候需要通过一些配置项来调整平台或者其它构建环境的差别;第三个从这里引申出来的要点,那就是构建不能依赖于具体的IDE,因为这并非是所有环境都应该有的东西,这点我体会尤深。
持续集成的第二个要点,就是在上面第一点的基础上,需要在构建过程中,必须加入能够度量产品质量的一系列工具或过程。这点就很好理解了,持续集成不是为了持续的编译代码,或者说不只是。更多的是监控在变化的过程中,是否引入了复杂性、重复度、不好的代码风格、隐藏的bug。这些都是一个产品健康与否的关键指标,恰如一个人的身高体重血压,只有具备了这些过程,构建才能对产品形成一个客观的报告,在这方面我用过的工具就有sonar,pmd,checkstyle,findbug等,当然,这里有一个并非现成的工具,而需要开发者辛勤的去积累的一个东西,那就是对于产品的自动化测试代码,根据我的实践,在一个既有代码全无测试的工程里加入测试,背负的历史包袱不可谓不重,报告里对代码测试覆盖率极低的数据,又会成为开发者最终放弃做单元测试的理由,这个大概可以用“破窗理论”来解释,一旦开发者觉得无望处理遗留的代码,他就有可能转为顺从历史,也放弃写测试,进而导致这个洞越来越大。这事我觉得较为靠谱的或许就是由开发者坚持对新功能加测试,然后对于出现问题的老代码加上测试,逐步进行。
然后是持续集成的第三个方面,这个点可以很自然的从第二点推导而来,既然我们视集成构建是一件“有用”的事,而非一个玩具或者一种时髦,那么第二步加入的度量报告就必须受到严肃的对待,这些数据必须及时的通知到对应的人员并及时处理。简单的一些原则包括:必须尽快修复失败的构建;开发者争取建立自己的私有构建过程,避免提交不能构建的东西到版本库等。通知和展现这个目前持续集成的工具都做的比较好。我用过的hudson及其各种插件能满足大部分场合的应用,最要关心的反而是人的环节,必须有人对持续集成产生的报告做持续的跟进,并及时抛出一些需要团队注意的问题,这样才能规避一系列的开发风险,提高开发的质量和效率。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
总结来说,《持续集成:软件质量改进和风险降低之道》提供了关于如何实施和优化持续集成策略的全面指导,帮助IT团队提升软件开发的效率和质量,降低项目风险,以适应快速变化的市场需求。通过理解和应用书中的原则和...
本篇文章将深入探讨持续集成如何实现软件质量改进和风险降低,并提供相关的实践策略。 一、持续集成的定义与意义 持续集成是指开发人员每次完成一个小的功能或修复后,立即将其代码合并到主分支,同时自动化运行...
1. **持续集成:** 作为持续交付的基础,确保代码的稳定性和质量。 2. **自动化测试:** 包括单元测试、接口测试、性能测试等多种类型的测试。 3. **配置管理:** 使用配置管理工具来确保生产环境与开发环境的一致性...
CMMI由美国卡内基梅隆大学软件工程研究所(SEI)开发,它整合了多个过程改进模型,如CMM(能力成熟度模型)、SW-CMM(软件能力成熟度模型)等,旨在帮助组织提升其业务流程的效率和质量。CMMI包含了五个成熟度级别,...
### 软件测试与持续集成技术教程 #### 第1章 软件测试与持续集成技术介绍 ...而持续集成技术则进一步提升了软件开发的效率和质量,降低了软件发布的风险。掌握这些技术和方法对于现代软件开发团队来说至关重要。
在提升软件质量、降低研发风险、拒绝浪费方面,处于敏捷实践领域的持续集成(Continuous Integration,CI)起到重要作用。持续集成能够解决研发工作中的80%任务(日常),而剩下的20%任务(非日常)需要研发团队智力...
- Jenkins:持续集成/持续部署工具,自动化构建和测试过程。 6. **最佳实践**: - Agile方法:采用迭代和增量开发,强调快速响应变化。 - TDD(Test-Driven Development):先写测试用例,再编写满足这些用例的...
- 持续集成与交付将成为软件开发的标准实践之一,推动软件行业的持续进步和发展。 #### 第7章 参考资料 - [1] Martin Fowler. "Continuous Integration." <https://martinfowler....
- **总结**:通过对软件工程中的敏捷开发与持续集成的学习,我们了解到这两种方法论对于提升软件开发效率和质量的重要性。敏捷开发侧重于灵活适应变化,持续集成则强调自动化构建和测试,两者的结合为现代软件开发...
### 软件工程中的持续集成与交付系统 #### 第1章:软件工程概述 - **定义**:软件工程是一门研究如何应用工程原理、技术和方法来开发与维护软件的学科。 - **重要性**: - 在现代社会,软件成为基础设施的一部分...
DevOps是一种旨在促进开发、运维和质量保证团队之间协作的文化、实践和技术的集合,其核心目的是加速软件的交付过程,同时提高质量和稳定性。在"DevOps持续改进之道"的分享中,我们可以看到多个关键知识点: 1. **...
它旨在检测软件缺陷、评估软件质量,并确保软件能够按照既定规范和用户需求稳定运行。 **软件测试的重要性**: - **降低修复成本**:早期发现并解决缺陷比后期修复更为经济。 - **减少错误和缺陷**:提高软件质量和...
8. 持续集成和持续交付(CI/CD):现代敏捷开发中,CI/CD流程自动化了构建、测试和部署,确保每次代码提交后都能快速得到反馈,降低集成风险,提高软件发布的速度和稳定性。 9. 质量度量与监控:通过度量代码覆盖率...