`
james_lover
  • 浏览: 44559 次
社区版块
存档分类
最新评论

回顾我经历的持续集成实践的不足

阅读更多

       过去了5年了,现在再来回顾当初做的持续集成实践似乎有些晚了,我的确脱离开发太久了。

暴经历:

       09年公司刚开使推行持续集成时,我作为刚接触IPD流程不久的小白,对持续集成一无所知;同时作为组内的急先锋匆匆忙忙就上阵了。等到10年底持续集成即将在全公司推广的时候,我却离开了,可谓虎头蛇尾。

 

==============================

这里谈不足,主要是回顾持续集成实践一年多的时间里,我所做的工作的不足。

       公司所用CI工具是CruiseControl的二次开发版本,基于ant做build。而此时我们的java 项目还是依赖于eclipse的手工归档(这里不得不吐槽:先编译成class,手工统计更改的 java 类,再手工把对应的class用rar拖入上一版的jar包,土到家了)。

首先要面临的问题:如何自动打包归档。

当时还是太保守了,本着线上安全大于一切的原则,将之前的手工操作,用shell+ant来代替。 因为项目不是处于时刻能发布的状态,给后面的集成测试环境自动部署带来不小麻烦。 当时实际应该协调测试部进行全量测试后,一次性的解决“随时可发布”问题,一个人搞,在协调工作和沟通工作没有做到位。

接下来是代码规范和bug清零:findbug清零,checkstyle检查和pmd的圈复杂度。

由于自动UT的缺失,在bug清零和降低圈复杂度上推进很困难,原因就在于:无法确定修改代码的正确性,pmd的圈复杂度始终降不下来。

最困难的是UT:代码覆盖率

除新代码的UT用例外,还要补充老代码的UT,还要不影响项目进度。大大增加了开发人员的工作量,在合作团队里造成一些抵触。还有老代码很少考虑测试性,与DB ,第三方耦合过紧。当时相当于放弃了UT测试(不再测试方法),而直接针对业务流程的正确性做UT。 这样的好处是少量的测试代码能显注的提高代码覆盖率,但却失去了UT的本义。当时是有些急功近利了(CI报告好看)。

 

        当时的感觉是“一个人在战斗”,与公司其它CI负责人的交流很少。自已的沟通能力不足是一方面,另一方面公司缺少这种跨部门交流的氛围。我觉得应该是考核导向的原因,持续集成各项指标达标以后,关注CI的精力大大减少了。虽然QA保持每月对CI报告进行通报,但稳定的CI报告下面究竟隐藏着多少问题呢?

 

      与持续集成相符相成的敏捷开发,在我看来一直都流于开晨会这种形式,无法真正敏捷起来(缺少持续集成的保护),很失败。抛开缺少敏捷基因的原因,我觉得和项目环境关系很大。

      首先电信项目,是传统的甲方乙方这种的IT外包项目。项目从实施到开发都没有敏捷的动力:客户追求的是稳定,项目组追求的是低成本。对于只增加工作量,不增加效益的工作天生就是抵触的。这种抵触情绪会传遍整个项目组,本身外包团队就缺少技术氛围,这下使得团队更加的拒绝变化。这一特点在回到河南(客户第一线)来以后更是明显:成员(包括我)本能的通过裁剪开发流程(丢弃开发规范)来适应快速变化,而不是提高开发效率,基本上和一些小公司作坊式的开发一样,没有规范,没有文档,更没有持续集成,客户也习惯了这种方式。 使刚从总部回来的我,有些不适应。

        

        

0
0
分享到:
评论
4 楼 paladin1988 2014-08-20  
我一直觉得HS的IPD流程很牛逼的了,当天的代码提交,findbugs, checkstyle,单元测试,每天持续的build,第二天早上关注各自的问题列表并进行整改。。。至于你说的圈复杂度降不下来,我估计是版本发布的周期太长了,而且桌前检查的推进力度不够,一般情况下都可以处理的吧。UT也是实在没有办法的事,HW很多项目都在赶,尤其到了交付的时候,大不多都是直接走业务了。。CI,就看在谁的手里用,用这东西的是谁,用得到的不仅可以提升项目的质量,提高开发效率,用得不好的,仅仅只是个工具而已。。
3 楼 white_crucifix 2014-08-09  
一看是电信项目就理解楼主的苦衷。
一句话,环境本身不具备这样的基因,就必然做不了这样的事

2 楼 james_lover 2014-08-08  
java_web_hack1 写道
没有必要一位的追求代码覆盖率
有些人为了追求代码覆盖率,连set、get方法都写UT,没有必要

因为CI报告是考核KPI,持续集成已背离了初衷。
1 楼 java_web_hack1 2014-08-08  
没有必要一位的追求代码覆盖率
有些人为了追求代码覆盖率,连set、get方法都写UT,没有必要

相关推荐

    第一篇:系统集成心得体会 .docx

    接下来,系统集成实践中的几点重要心得: 1. **CI(持续集成)与过程及敏捷开发**:CI是敏捷编程中的关键实践,确保每个迭代的交付件都经过完整集成和测试,以保证质量。CI的引入改变了开发流程,要求开发人员频繁...

    《敏捷教练之路》演讲PPT

    徐毅在演讲中也提到了如何扩大影响力,比如鼓励开放式沟通、建设专业的团队、推动持续集成和ATDD等实践,并成为社区的积极分子。这些都是敏捷教练可以采取的步骤,来推动敏捷在组织内的传播和实践。 10. 知识共享和...

    创独特代工模式:从“集成电路”到“集成系统”——访武汉弘芯半导体制造有限公司首席执行官蒋尚义.pdf

    综上所述,半导体行业正经历着从集成电路到集成系统的转型,这一转型不仅需要技术创新,更需要产业链各环节的紧密协作和工程师素质的全面提升。蒋尚义的观点为我们提供了一个清晰的发展方向和行动指南,让我们能够更...

    软件开发与项目管理专业实习总结.doc

    在与同学们的比较中,我看到了自己在实践操作上的不足,也感受到了他们持续学习的热情。这段经历促使我认识到,实践是检验真理的唯一标准,我必须不断实践,将理论知识转化为实际技能。 实习经历如同一面镜子,照见...

    软件工程师年终工作总结四篇.docx

    在现代社会,软件工程不仅是技术的实现,更是一个多元化、全方位的职业角色,它要求从业者的技能...我相信,通过不断的学习和实践,每位软件工程师都能实现自身技术与职业素养的全面发展,为公司的持续发展贡献力量。

    2018 医院信息化建设报告-从集成平台到大数据应用的跃迁.pdf

    随着社会经济的快速发展和科技水平的不断提升,医疗行业也在经历着前所未有的变革。信息化技术作为推动医疗行业进步的重要力量,正逐渐从传统的集成平台向大数据应用的广阔领域跃迁。《2018 医院信息化建设报告-从...

    2020软件工程师个人年终总结范文.doc

    同时,我也重点关注了持续集成和自动化测试的实践,通过引入Jenkins、GitLab CI等工具,使得项目的质量得到保障,开发流程更为高效和流畅。 项目管理是软件工程中不可或缺的一部分,而在管理过程中,有效的测量和...

    软件工程实践技术与案例分析教程.pptx

    - **持续集成/持续部署(CI/CD)**:自动化软件构建、测试和部署过程。 - **维护策略**: - 纠正性维护:修复已发现的问题。 - 完善性维护:增加新功能或改进现有功能。 - 预防性维护:改进软件结构,提高未来可...

    圣简集成墙饰销售核心技能与渠道管理.pptx

    3. **成功销售人员的三个境界**:从业余到专业,成功的销售人员需经历从理解基本技能到熟练运用,再到掌握复杂策略的转变。 4. **八大核心销售技能**: - **基本拜访步骤**:预习、检查分销、劝说销售、收款、助销...

    课程设计个人工作总结

    本课程设计个人工作总结,旨在回顾和总结在过去的实践教学环节中所获得的宝贵经验,以及对个人综合素质的提升进行反思。 在课程设计的过程中,首先对学生进行系统性训练的是文档撰写和项目管理的能力。通过为期10天...

    实习报告_某公司软件测试实习.rar

    我学习了如何编写脚本,执行回归测试,并通过持续集成工具如Jenkins实现自动化测试流程。 五、缺陷管理与跟踪 当发现软件缺陷时,我们会使用Bugzilla或Jira等工具记录、分类和追踪。了解如何准确描述问题,设置...

    软件工程师2021上半年总结-个人总结.docx

    展望未来,我计划在接下来的时间里继续深化SpringSecurity的集成工作,并致力于OA系统的开发。同时,我也希望继续维持xx家政网络服务中心的稳定运行,并计划拓展更多地区的服务中心。我还将持续关注新技术动态,不断...

    计算机程序员实习总结.docx

    然而,日语课成了我的难题,语言天赋的缺乏和记忆力的不足使我在日语学习上遭遇挑战,但我仍然尽力去学习,特别是喜欢日语教师的授课风格。 随着培训的结束,我们进入了项目实施阶段,包括需求分析、概要设计、具体...

    Happy_Teams_Checklist:一个快乐的团队会实践所有这些。 让我们一起开心吧!

    在过去的几年中,我与多家初创公司合作,我亲身经历并亲眼目睹了实践(或缺乏实践)如何影响团队的情感幸福感。 因此,本着乔尔·斯波斯基(Joel Spolsky)测试的精神,我提出了自己的高度认可的清单,以建立...

    运维上海2017-天猫DevOps转型实践-刘雄昌.pdf

    刘雄昌首先进行了自我介绍,回顾了自己的职业经历,他从一名普通的发布工程师,到担任天猫双11狂欢夜的技术架构师,积累了丰富的经验。正是这些经验使他成为了此次天猫DevOps转型的核心人物。 转型的开始是从组建一...

    [实习总结范例].doc

    我学会了使用Git进行版本控制,以及Jenkins进行持续集成,这些工具对于软件开发的效率提升有着显著作用。 在实习期间,我还接触了数据分析和机器学习。使用Python的Pandas库处理数据,运用Matplotlib和Seaborn进行...

Global site tag (gtag.js) - Google Analytics