返回 登录
0

【SDCC 2016】CSDN 开发服务解决方案总监尹亮:如何打造高效、敏捷软件开发平台

阅读21901

【CSDN现场报道】2016年11月18日-20日,由CSDN重磅打造的年终技术盛会 —— “2016中国软件开发者大会”(Software Developer Conference China 2016,简称SDCC 2016)在北京京都信苑饭店隆重举行。本届大会云集了100多位国内外顶尖专家和技术大牛,共设新趋势和新实践2大主题会场,14个技术专题。面向国内外的中高端技术人员,聚焦最前沿技术及一线的实践经验,助力企业的技术升级和改造、全面提升技术人员的综合实力。


在11月19日的 Keynote 上,CSDN 开发服务解决方案总监尹亮发表《如何打造高效、敏捷软件开发平台》主题演讲,敏捷开发能够带来降低缺陷率、缩短产品周期、提高生产效率、降低成本等优势,随着在软件开发方面呈现出团队规模变小、工作方式敏捷趋势,越来越多的开发团队在业务流程中使用开发管理工具,比如 Git 在国内外软件开发者群体中的使用率已分别达85%、52%。

CSDN 开发服务解决方案总监 尹亮

那么,对于开发团队,如何选择敏捷管理工具?可主要从功能特性、使用规模、部署方式、易用性、维护管理、扩展性等方面综合考量。使用 Git 速度快,对分支友好,利于协作,和 CodeReview 集成度好,但 Git 还是需要注意一些问题,比如学习曲线陡峭、大量二进制文件时的处理,涉及到项目引用/模块重用时,Submodule 的一些操作有些费解。此外,尹亮表示,在持续部署和持续交付方面,自动化是关键,在此之中,Jenkins的使用率最高,为45.05%,同时,在 CI/CD 实施中需注意:考量整体开发环境,从基本流程入手循序渐进,逐步增加自动化环节,扩大应用规模。

以下为演讲整理:

软件开发趋势

大家好,很荣幸站在这里与大家分享如何去选择和使用一些软件开发的工具,建立适合自己与团队的开发平台。首先看一下这几年的软件开发趋势:

1. 团队规模变小,工作方式敏捷

这主要体现在比之过去的集团机制团队,越来越多的团队规模偏小型,却能够在较短的周期内研发出大型的产品或系统,借助于很多敏捷的工具,大大提高了开发者及团队的生产效率。

2. 越来越多地使用开发管理工具

在最新发布的《2016年度中国软件开发者白皮书》中可以看到,64%的开发者在不同程度上使用了软件管理工具,这是指软件生命管理周期工具,譬如项目管理、代码存储、测试管理、Bug 追踪以及集成测试、持续测试、持续部署一直到后来的运维工作等所通用的工具。

在此之中,敏捷是项目管理的基础,以前的很多开发模式已慢慢被敏捷所取代,据一项国外调查数据显示,80%的团队在项目研发中使用到了敏捷。而代码管理作为开发环节中最为重要的部分,有85%的开发团队使用到了 Git,普及率相当高。对比之下,国内则相对较少,敏捷、Git 占比分别为64%、52%。

这其中比较有趣的现象是,2011年,在全球范围内,SVN使用率排第一,到了2012年,除了中国及少部分国家地区外,可以明显地看到,Git 已经占领了世界,直到2014年,Git 才在国内实现较快增长,但许多传统公司使用的依然是 SVN,2016国内软件开发者数据显示,SVN占比69%,而 Git 则为52%。

Git 的趋势

还有一部分是持续集成和持续部署,应该说这是现在整体软件开发中非常好的一个趋势,能够立竿见影地提升开发效率。目前,CI/CD 在国内外的占比分别为47%、65%,还有很大的上升空间。

敏捷开发

俗话有言“工欲善其事必先利其器”,接下来,我会从敏捷、Git、CI/CD 这三个方面具体阐述我们都有哪些工具,又该如何选择和运用。首先是敏捷管理工具,对于“敏捷”这个话题已经持续地热了许多年,也有非常丰富的工具供我们选择。敏捷开发能够在产品质量、发布时间、生产效率、成本、满意度等这些方面带来诸多利好,比如降低缺陷率、缩短产品上市时间、提高14%-95%的效率、降低成本、以透明的方式提升员工满意度和管理等。

当前敏捷开发主要有看板和 Scrum 两种方法,但需要考虑的选择因素却多种多样,因为涉及到产品研发体系的方方面面,从使用者、管理层、工程师、运维等的角度各有不同,比如功能特性、使用规模、部署方式、易用性、维护管理、易于集成、扩展性良好、价格成本等,这里就需要根据公司的具体情况来看怎么去选择一个合适的工具。

Gartner 研发管理工具报告

首先,我们可以对比一下国外的主流敏捷管理工具(如上图所示),从 Gartner 研发管理工具报告的第一象限,我们可以看到一些相对熟悉的传统工具厂商,比如 Microsoft、IBM 等,以及来自澳大利亚的 Atlassian。相对于传统工具,Atlassian 的优势在于灵活、开放,可以很灵活地根据企业需求进行定制化,其插件非常丰富,开发团队可以非常便捷地在产品研发的各个环节进行集成。从2016软件开发者调研数据可以看出,JIRA 已经成为使用最多的敏捷管理工具,占比42%,禅道占比39%,在此我们应该感谢一下其创始人王春生多年来在项目周期管理上所付出的心血。微软的 Team Fundation Server(TFS)占比14%,名列第三。

2016软件开发者调研数据

那么,到底该如何选择适合自己团队的敏捷管理工具?最为简单的可能会说用 Excel与贴纸相结合的方式去承接敏捷所创造的工作方式理念。说来汗颜,我在最初接触敏捷时,许多工具基本还不成熟,就是用一个 Excel 表格做了很多年的管理团队敏捷开发的事务。但是,当你的团队规模稍微大一些,需要做一些信息化的管理,协调更多团队的工作,需要进行数据分析,而且各个团队的使用流程也稍有不同。这个时候,就需要一些比较集中的管理工具了。对此,我们可以有这样几种选择:

  • SaaS 服务,如 Trello、Teambition、Tower、Worklite 等,支持通用的任务管理,基本可以定制相对简单的工作流程;
  • 专业的敏捷管理工具,如上面提到的 JIRA、Rally、TFS、禅道等,适合于规模较大或有专业需求的公司团队。

至于如何去选择,就需要根据自己的团队规模的情况,在我们谈论敏捷管理的工具时,有些话题是值得我们思考的。借用村上春树的一句话就是——“当我们谈论一个敏捷工具的使用时,其实我们在谈论什么?”其实更多的时候,我们在谈论这个管理流程到底是什么样子,就是有些团队或公司的管理流程不是很清晰,在这上面用什么样的工具都不合适。所以关于敏捷,工具固然重要,但管理才是根本,公司团队需要真正把敏捷的精髓思想学到,再根据情况选择所需要的管理工具。

Git

Git 系出名门,兴起于开源社区,其最重要的特点是分布式,可以本地提交直接做代码库操作。且对分支友好,利于协作,速度快主要体现在版本检出、比较、合并三个方面,且和 Code Review 集成度良好。数据显示,使用 Pull Request 做 CR,缺陷密度能够降低20%。

但是,企业对于 Git 版本控制的需求和开源并不一样,我总结主要分为以下两类:

  • 功能:权限、数据分析、现有工具集成、特殊功能定制;
  • 架构:HA、易扩展、高性能、多研发中心支持。

使用 Git 优势众多,但开发团队仍然需要注意一些问题,比如:

  • 学习曲线较陡峭;
  • 权限力度粗;
  • Git 工作模式选择;
  • 大量二进制文件时的处理;
  • 涉及到项目引用/模块重用时,Submodule 的一些操作有些费解。

当然,这些问题不是阻碍我们使用 Git 的理由,我们需要了解这些问题才能够更好地使用它。

持续集成与持续部署

持续部署是最近两年才提出来的,之前一直说的是持续集成,理念在于从开发、测试到部署属于一套自动化的环境。但是现在,在生产环境中用测试部署都比较小心翼翼,很少有团队代码提交一个版本,一个系列的自动化就部署到线上了。但是在测试环境下,大家都比较大胆,新的代码提交后,很快就用 CI/CD 部署到测试环境中,这是因为有很多的团队有比较优秀的实践。

关于持续集成和持续部署需要强调的一点是,一般我们所说的CI/CD工具的本质是一个调度系统,就是调度其他的自动化工具协助完成整个开发流程方面的自动化。自己并不会帮你检测代码、做部署、测试。所以我们用好 CI/CD 自动化是关键,有些自动化是一劳永逸的,你做完一次,以后的话就是提前用都没有问题,不用做大的修改,根据一些自动部署的软件,去写自动部署的脚本,变化不大。但是自动测试的话,就可能需要投入比较大的人力去做自动化测试的脚本,自动化测试包括一些单人测试、功能测试,单人测试可能简单一些,有很多的框架自己接入去做。但功能自动化的测试甚至于性能测试是比较头疼的问题,其实近些年一直没有能够去解决。但是我们还是可以做冒烟测试,把主要流程测下来。如果去做全样的自动化测试,可能需要有一个团队去维护一套自动化测试的脚本,而且天天做修改。

在工具选择方面,和前两个有所不同,基本上呈现着 Jenkins 一家独大的趋势,其在开发者群体中占比45.05%。造成这一现象的因素有很多,第一是本身它的功能比较丰富,基本能够满足我们通用的一些需求,其次 Jenkins 自身的生态链做得比较好,拥有很多的插件,本身是调度系统。还有一个是社区非常活跃,许多问题在社区中都可以得到较快的解答,所以 Jenkins 相对于其他工具甚至是一些商业工具都是绝对的领先。

最后,我们来说一下在 CI/CD 建设过程中需要注意的事项:

  • 整体开发环境;
  • 循序渐进:从基本流程入手,逐步增加自动化环节,扩大应用规模。

在敏捷开发方面,CSDN 有着一整套的全生命周期开发工具,包括需求管理、设计建模、开发、测试、发布部署、知识共享、项目管理、沟通交流。从项目管理需求到开发测试,都有着创新的解决方案,产品主要分为几个部分:精选的商业产品、开源产品定制、自研产品,已经在很多企业都有应用,感兴趣的话欢迎共同交流,谢谢大家。

CSDN 全生命周期开发工具


更多精彩内容,请关注图文直播专题:SDCC 2016中国软件开发者大会,微博:@CSDN研发频道,订阅CSDN官方微信公众号(ID:CSDNnews),即时获取大会动态。

评论