在软件开发的过程中,是不是总会遇到这些问题:
搭建一个开发环境,用了九牛二虎之力,悲催的是竟然用不了……
团队同事突然出差,他写的代码出现问题,我却不会改……
提升软件件质量靠代码,交叉看、找大拿,简直太累了……
频繁修改提交代码,本地记录自己看着都头疼……
……
这些问题尽管不是软件开发过程中出现的全部障碍,但的确是开发者在工作过程中碰到的“神坑”,怎么规避?可以听一听
华为云软件开发云的专家怎么说!
关于开发环境不兼容的痛
据了解,华为云软件开发云提供的是一站式云端DevOps平台,其中包含的是端到端的工具服务,这样就会覆盖不同的角色,包括管理、开发还有运维,笔者理解其实这样的一个平台可以极大可能地解决整个链条上出现的诸多问题,例如开发环境不兼容、代码检查与整合等,而不用再寻找更多的解决方案分段解决问题。
在软件开发云上,云端的开发环境被称为CloudIDE。简单来说就是打开一个浏览器,在浏览器中完成代码的编写和调试,不用特别安装IDE的环境。据悉,这款云端的开发环境已经可以做到12种主流语言的支持,并可以做到一键式自主选择开发的技术框架栈,快速构建开发环境,这就很好地解决了开发者在开发过程中劳心的问题。
华为云软件开发云运营总监张勇
更重要的是,开发好的环境可以复制到团队其他程序员手中,避免了二次开发的时间浪费,既然可以复制就可以有效解决环境不一致的问题,就算团队中的成员突然出差,代码出现问题需要补充以及修改,只要直接在自己的电脑上打开浏览器,就可以完成代码的开发和修复工作,有效解决了开发者在开发过程中的劳力问题。
华为云软件开发云高级产品经理马兵东对笔者说,这个环境中还集成了代码仓库、代码检查、代码评审等相关功能,最终实现的目标就是可以将开发环境的配置时间极大程度地缩短,由天级降到分钟级,目前来看这个改变是有效的。
举个例子,中译语通(青岛)有限公司企业大数据事业部副总经理安青这样总结CloudIDE在业务实践中的表现。“大家可以看到,我们公司做的国家级平台比较多,在多平台的开发环境搭建中,由于业务的多样化属性往往出现需要构建多个开发环境的问题,这种情况非常耗时耗力,有时候由于环境版本和框架要求不同,会存在兼容性差的缺陷。”
解决这种问题,中译语通选择采用华为云软件开发云,主要是由于其支持java、PHP、Python等多种主流开发语言,同时支持大数据、APP、web等多种应用开发环境。统一的开发环境构建功能为多种业务并行所要求的复杂的开发环境构建提供了可能性,并同时降低了环境配置的成本。
客户难以实时参与的痛
在敏捷开发的时代,一个好的产品、项目的标准就是要满足客户的需求并且及时响应客户的变化。在这方面大连华数大数据科技有限公司深有体会。
大连华数是一家专注于为工业、金融、政务等行业领域客户,提供大数据技术产品、行业应用、咨询规划一体化服务的高科技公司。CEO李闯向笔者介绍,其公司开发数控机床智能运维云服务平台时,便遇到了这种客户无法实时参与项目、了解项目进展、把控项目风险、需求反馈不及时的情况。
采用华为云软件开发云后,基于软件开发云提供的一站式云端DevOps平台,覆盖了管理角色、开发角色还有运维的角色,把这些角色放在开发闭环里面,使得项目完成度一目了然的,从而帮助项目管理者、最终客户实现管理透明,项目透明。
代码检查太复杂的痛
都知道想要提升软件质量很重要的一方面就是代码写的好,但是代码的优化不能单纯依赖人力,实际上更多的还要靠一些管理手段,华为云软件开发云对此配置了代码检查的功能。华为云软件开发云运营总监张勇表示,目前我们的代码检查可以在一定程度上替代人力,可以有效缓解有些缓解规模比较小的企业通过交叉检查、聘用高水平人才替代检查造成的效率较低的情况。
从现实出发,如果代码量较大也不支持这种人力形式的检查方式,同时还会出现代码剽窃的现象,有数据显示,软件开发云的代码检查系统中有1800多条规则,应对常见的代码问题是没问题的。
此外这种设置可以做到提前发现代码编码的问题,架构的问题及编码风格的问题,有效避免冗余代码,最后还可以辅助程序员修改代码。
据笔者了解,代码检查的设置并不在代码仓库中,而是有一个代码检查的引擎帮助完成,其中涉及到一个端到端的加密通道。每次进行检查的工作时,会将代码放到规则库中过滤,观察代码检查得出的结论。目前来说这个代码检查的规则库还并没有固定的检查以及更新频率,但是有数据可以补充参考下:九月初为1425条规则,到上周看应该是1873条规则。
值得一提的是,代码检查的规则本身支持一些用户自定义适合企业的检查规则。
那么软件开发云代码检查功能这些规则从哪儿来?第一个来源是不断把业界一些先进的代码检查规则以及有些先进公司分享出来的规则做出集成;还有一部分是根据华为本身的软件开发经验的规则总结;另一方面则是每上线一种成熟的开发语言必须会随之配套相关的规则。
代码检查除了是开发者的一项福利之外,更重要的一方面,开发者本身的编程技巧的训练也可以通过1800多条代码建议进行提升,很大程度提高了程序员的编程技巧和编写代码的规范。
从初级研发工程师到资深技术专家的成长过程中,华为云软件开发云可以更好地为初级研发人员提供可协作的在线编译构建能力,根据研发场景自定义代码检查规则集以及提供华为经典开源代码为指导,从而加快员工的成长速度。
查看历史记录与代码整合的痛
为什么要提高代码合并的效率?以前中央式的代码仓库,程序员去做代码合并的时候都是向同一个仓库中不断持续的完成合并这个行为,当一个开发者去合并这个代码的时候,会产生一些新的Gap,后面的开发者继续合并的时候需要把前面的Gap一同合并上。
使用Git时,由于本地已经存在了完整的历史记录,导致代码提交的频率不会像原来那么高。对此,华为软件开发云一般构建Feature的分支,一段时间内只关注Feature分支就可以,然后再做一次代码的合并,合并后会基于分支去开发commit,这样粒度比较小,只需要解决一些小问题。另外Git本身会带有一些智能合并的功能。
据悉,代码仓库有不同的分支,在远端的云上存在的分支数不会直接导致每个人的代码在云端有多个版本的代码,如果远端有三个分支的话,本地根据需要可能只有一个开发分支。
据了解,目前
华为云软件开发云已经在大连、青岛、福州等城市成立创新中心,提供线下技术支持,支撑产业转型升级,在服务2000多家企业,5万多名开发者的同时,与清华、北大、北航等30多所高校也建立示范性软件学院联盟。
- 华为云软件开发云:容器DevOps,原来如此简单!
当开发团队把代码提交到 Git 应用仓库的那一刻,他们心里在想什么? 祈祷没有bug?渴望回家补觉?产品经理Go Die? 对,也不对.因为这只是最终发布万里长征的一小步,接下来要面对测试环境.生产环 ...
- 如何使用华为软件开发云快速部署PHP网站
华为软件开发云这个工具,从去年推出我就一直在关注,毕竟是华为最新的一款软件开发工具,最近我一直在使用华为软件开发云进行开发项目管理,它有在线编译和构建.云端在线代码检查等功能,编译省去了很多物理机器的 ...
- Eclipse安装Git插件以及通过Git导入华为软件开发云项目
--内容提交-- 1. Eclipse安装Git插件 2. 在Eclipse中导入华为软件开发云项目, 以及常用Git操作 一. Eclipse安装Git插件 现在从eclipse官网下载 ...
- GitHub转华为软件开发云详细教程
一.复制GitHub的代码库地址 首先,打开Github网页,找到要迁移的代码仓库地址,如下: 点击Clone or Download,出现以下界面 点击Copy toclipboard(复制到粘贴板 ...
- 如何将Android Studio与华为软件开发云代码仓库无缝对接(二)
上篇文章:如何将Android Studio与华为软件开发云代码仓库无缝对接(一) 上一章讲了,如何用Android Studio以软件开发云代码仓库为基础,新建一个项目.接下来,这一章继续讲建好项目 ...
- 华为软件开发云对比Jenkins-JavaWeb项目持续部署方式
一.前言:Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成和持续部署变成可能. 本文 ...
- 华为软件开发云CloudIDE功能简测
华为软件开发云CloudIDE是面向软件开发者的云端开发环境,支持在线编写代码,智能提示,代码提交,代码片段智能搜索等功能. CloudIDE实现了大部分IDE的功能,同时克服了全能IDE的缺点. 一 ...
- 看完给跪了:技术大牛总结的Github与华为软件开发云完整对比
华为软件开发云配置管理 服务和Github是国内外比较有代表性的代码托管平台,它们以git作为版本管理工具,使项目中身处各地的人员可以协同工作,主要操作涉及仓库.分支.提交.pull request等 ...
- 一个项目经理对主流项目管理工具的对比:禅道VS华为软件开发云
禅道与软件开发云对比分析报告 1. 产品介绍 禅道是易软天创出品的一款项目管理软件,集产品管理.项目管理.测试管理.文档管理.组织管理于一体,覆盖了项目管理和测试管理的核心流程. 华为软件开发云 (D ...
- 无状态会话bean(1)---定义
无状态会话bean用于完毕在单个方法的生命周期内的操作.无状态bean能够实现很多业务操作,可是每一个方法都不能假定不论什么其它的方法会在它之前调用.后半句的意思是如今的你可能不是刚才的你.明天的你可 ...
- 学习Java必看书籍和步骤
Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<ThinkinginJava>.它是一本写的相当深刻的技术书籍,Java语言基础部分基本没有其它 ...
- Altium Designer如何设置pcb尺寸
- Nginx TCP代理
nginx 在1.9.0 版本发布以前如果要想做到基于TCP的代理及负载均衡需要通过打名为nginx_tcp_proxy_module的第三方patch来实现,该模块的代码托管在github上 网址: ...
- 用static 创建类的单例
1.0 说明 通过函数调用new的static 类对象,由于static 对象只能初始化一次,由此构成单例运行. 2.0 直接代码 代码为windows,win32工程,因为只有一个文件,不上传工程 ...
- 【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
[链接]h在这里写链接 [题意] 在这里写题意 [题解] dp[i][0] 第i个位置,bob没有决策权 dp[i][1] 第i个位置,bob有决策权 dp[n][0] = 0 ...
- Python中的Sets数据结构
Python的set和其他语言类似,是一个无序不重复元素集,基本功能包括关系测试和消除重复元素.集合对象支持union(联合),intersection(交),difference(差)和sysmme ...
- [Angular] New async 'as' syntax and ngIf.. else
From Anuglar v4 above, we are able to using 'as' with async pipe. This allow as using 'new variable' ...
- docker 第一课 —— 从容器到 docker
1. 容器的概念 一种虚拟化的解决方案 与虚拟机所不同的是,虚拟机通过中间层,将一台或多台独立的机器虚拟运行于物理硬件之上: 而容器是直接运行于操作系统内核之上的用户空间: 基于上述,容器虚拟化也被称 ...
- [Angular] HostListener Method Arguments - Blocking Default Keyboard Behavior
We are going to see how to using method arguments for @HostListener. First, we can use HostListener ...