实践干货 | 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

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分