实践干货 | CodeWave如何支持多人协作开发应用

2023-12-14 09:12

本文主要是介绍实践干货 | CodeWave如何支持多人协作开发应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在传统软件开发领域里,要完成具备一定复杂程度的软件,通常都会由一个研发团队协作开发。软件复杂度越大,研发团队的规模也就越大。

为了让研发团队能够高效的进行协同开发,业务引入了优秀的代码版本管理工具,比如传统软件开发主流使用的代码版本管理工具是Git和SVN。

与此同时,新兴的零代码、低代码开发方式也正在快速崛起。

无论是国内阿里的宜搭和腾讯的微搭,还是软件巨头微软Power Apps和曾估值接近百亿美元的OutSytems,都已经在软件开发领域里占据了越来越重要的位置。

在国内市场,相比于定位在服务钉钉、微信生态的宜搭和微搭,网易数帆CodeWave智能开发平台直接定位在支撑企业自身数字化转型的软件生产全链路创新,一方面能够支持复杂的个性化软件应用高效搭建,另一方面还能够支持SaaS、本地部署和源码导出,贴合各类客户的部署需求。

针对大型软件开发,CodeWave设计了一整套完善的多人协作能力。通过这些设计,使用过Git/SVN的用户,可以直接把已有的能力和经验复用过来;而没有传统开发多人协作开发经验的新用户,基于低代码本身低门槛的特点,也可以快速直接上手进行协作。

d9244909057d1197a02451f174c6a974.png

产品生命周期不同阶段的多人协作模式

阶段1:产品从0-1开发

一个软件在刚开始开发时,并不存在线上稳定版本的代码运行问题。我们往往只需要考虑一个代码主分支,多位开发者在一个主分支上进行代码推拉合并,进行协作开发。

5169d1568b507cabd3f00e6a2e452f65.png

阶段2:产品已上线

当软件的1.0版本开发完成后,通常我们会在代码主分支上打一个版本标记(tag),然后将1.0版本的代码发布上线。

后续有了新的项目需求,我们就需要针对这个项目拉取一个专门的开发分支,开发者在这个开发分支上继续进行协作开发,和在主分支上的协作模式类似。

那么为什么需要拉取开发分支呢?主要有几点考虑:

  1. 确保主分支的代码质量。新项目开发的过程代码肯定是无法持续保证质量了,必须要在开发分支上完成开发和测试验证,才可以合并回主分支。

  2. 确保线上产品的运维和新功能开发可以并行。由于软件1.0版本已经在线上运行,难免不会出现bug需要紧急修复。这样我们可以直接在主分支上快速的修复bug,而不受到开发分支代码的影响。

  3. 如果有多个项目需要并行开发,还可以再从主分支上拉取不同的项目开发分支,以确保多项目的并行开发,且代码相互隔离,互不影响。

这也是目前大型互联网公司主流的协作开发模式。

ef09b08b2c74009f884b1782ad62c00e.png

阶段3:产品多版本并行

传统软件行业以本地部署交付为主,随着市场发展到一定阶段,产品需要面向不同大客户交付不能兼容的功能。这些情况在前期不可预知,架构设计上难以覆盖。最终,产品会被分化成多个不同的客户定制分支版本。

这种情况比较复杂,也往往会存在很长时间。笔者曾经在诺基亚早期支撑2G/3G的软件平台上维护过类似产品。

在这种情况下,产品往往要专门引入一类角色——SCM(软件配置管理工程师),来专门对代码版本进行维护,基于每个定制版本的生命周期建立一套复杂的代码合并规则。

比如,在A分支里发现的bug,需要在B和C分支单独再修复一遍,D分支已经宣布停止维护,就不需要再修复了。

b3dbb15a15e02464d0ce149a838ca437.png

d0240eb11626c98e4ebb1be650d7e863.png

CodeWave多人协作的特色设计

为更好地支撑以上三种情况下的软件协作开发,网易数帆在CodeWave智能开发平台实践中,在代码管理和代码合并两个方面分别采用了如下特色设计。

代码管理

副本隔离

和传统开发不同,CodeWave是基于B/S结构的web端IDE,软件代码并未以一个个文件的形式存放本地电脑里,而是以NASL(NetEase Application Specific Language)格式保存在服务器上。

每位开发者可以在同一个应用下创建属于自己的副本,就相当于给自己创建了一个云端的工作空间。副本隔离则支持将每位开发者的开发环境隔离开来,确保了各自代码的安全性。

副本可以拉取分支代码库上的代码,进行代码合并,并将合并后的代码推送到代码库里,这样就完成了多人协作。

多分支合并

除了主分支外,CodeWave支持创建自定义的开发分支。

副本可以切换到开发分支上进行代码合并和推送,以完成多代码分支下的协同开发。

54e98c047f2234b7f7af0b539fbf1933.png

应用模版支持代码复用

CodeWave还支持了给将开发好的应用导出成模版,并且给予模版创建新的应用。通过模版,一个应用就可以复制成多个隔离的应用,这样就可以满足不同客户定制版本的软件长期升级与维护。

f79fec4abf01e73bd092fc3df9014652.png

代码合并

有协作经验的开发者都清楚,代码合并是一项非常重要,同时又很耗费精力的工作。

CodeWave结合低代码本来的开发特性,设计了业界领先的代码合并能力支撑。

组件粒度的代码合并

在开发公共页面时,不可避免会存在多个开发者协作修改同一个页面的情况。

为此,CodeWave设计了页面组件级的细粒度的合并能力,使得多位开发者可以精细化的进行代码合并拉取,最大化满足各类灵活的协作开发场景。

54ea0cec2422509b2461296422d0a471.png

所见即所得的冲突解决

低门槛一直是低代码开发相对于传统代码开发的一大优势,这一优势很大程度上来自于“所见即所得”的方式。而对于代码合并过程中可能出现的代码冲突,CodeWave也采用了这种方式来解决。

简而言之,在CodeWave上,通过本地和远端代码的点选,开发者可直接在页面上实时看到选择的效果,并通过直观的对比,更加高效地完成冲突解决。

537d790d3153bbbc277d9d63d4425d77.png

00c1107d8f0bc6e606efcb7f85ae0814.png

4251603676e8eca248fe440be8ec784e.png

在功能之外

汝果欲学诗,功夫在诗外。多人协作开发从来都不只是一个软件功能的问题,更多的是一个软件开发项目管理能力。因此,项目管理也是低代码开发必须狠下功夫的领域。

项目管理的方法,已从最初的瀑布式开发进化到当今主流的敏捷开发。

而即便是敏捷开发框架也已经从满足10人团队的Scrum,演化到支撑更大规模研发团队的LeSS (Large Scale Scrum)和SAFe (Scaled Agile Framework)。

本文不去介绍项目管理方法,而是就多人协作开发里最关键的事项做一些提炼:

先做好架构设计

无论是传统软件开发还是低代码软件开发,架构设计都是必不可少的。没有良好的架构设计就进入开发,结果就只是无休止的bug和返工。

通过低代码进行软件开发之前,最主要关注几点:

  • 做好数据建模。在开发之前一定要先做好数据建模,把底层的数据结构,表结构都确认好。后续所有的技术设计方案都应该建立在良好的数据机结构基础上,一方面在能够做出良好的技术设计,另一方面也避免了开发过程中过于频繁的进行表结构变更,带来更大的影响。

  • 高内聚和低耦合的功能模块划分。功能模块的功能内聚,边界清晰,不仅仅开发起来效率更高,还能够为上线后的升级带来长久的收益。毕竟我们做的每一个应用,都希望能够有更长的生命力。

  • 人员分工职责清晰,和功能模块关联。虽然CodeWave提供了所见即所得的代码冲突解决能力,解决代码冲突依然是个有可能会犯错的事情,所以最好的冲突解决方案就是预防冲突。在有了良好的数据建模和功能模块划分后,我们就可以将功能模块清晰的指派到人,降低多人同时开发一个功能/页面的概率,也就是降低冲突产生的概率。

开发过程中的重要事项

在软件开发过程中,我们需要注意以下几个重要事项:

  1. 做好代码备份。在开发过程中,定期进行代码备份是非常重要的。这样可以在意外情况下恢复代码,并保证代码的安全性。

  2. 高频提交代码。频繁地提交代码是保证团队协作顺利进行的关键。通过高频提交代码,可以及时发现问题并解决小冲突,避免大冲突的发生。同时,提交的代码也可以配合自动化测试,及早发现潜在的问题。

  3. 在副本上进行开发,在主应用上拉取代码和发布。多副本应该在同一个代码分支上协作开发,而主应用只专注于更新代码和发布制品应用。这样可以确保代码的统一性和发布的稳定性。

  4. 仔细处理冲突。当出现代码冲突时,我们需要仔细查看代码差异,认真处理。如果有疑问,一定要和相对应的开发者沟通确认。避免图省事的代码合并,给后续带来更大隐患。

321bcfff40a50eaba4fac83816af40be.png

One More Thing

网易数帆CodeWave智能开发平台定位于企业级智能开发平台,基于网易玉言NL2NASL领域大模型,现已支持自然语言编写代码、自然语言写SQL、代码解读等智能能力,并且更多AI加持的辅助多人协作的能力也已经在路上了。

网易数帆CodeWave智能开发平台将持续把AI能力全面集成到软件开发的全流程里,进一步加强企业数智化的产品支撑能力。

敬请点击“阅读原文”了解详情!

作者简介:何少甫,网易数帆CodeWave资深产品经理,多年B端经验,现主要负责CodeWave AI智能编程、NASL语言编程实践相关的产品规划与设计。

bd1cedaefccdbd007933a64a473747dc.png

这篇关于实践干货 | CodeWave如何支持多人协作开发应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/491943

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加