首页 > 其他分享 >软件架构生态化-多角色交付的探索实践

软件架构生态化-多角色交付的探索实践

时间:2023-04-21 23:05:59浏览次数:47  
标签:需求 生态化 实现 扩展 技术 研发 软件架构 交付

作者:京东零售 李春丽

作为一个技术架构师,不仅仅要紧跟行业技术趋势,还要结合研发团队现状及痛点,探索新的交付方案。在日常中,你是否遇到如下问题 “ 业务需求排期长研发是瓶颈;非研发角色感受不到研发技改提效的变化;引入ISV 团队又担心质量和安全,培训周期长“等等,基于此我们探索了一种新的技术体系及交付方案来解决如上问题。

背景

嗨,大家都知道软件研发需要许多角色共同协作,包括客户、产品经理、研发工程师、测试人员、实施运营团队等等。在这众多角色中,研发工程师的人数占比最高,但是研发资源毕竟有限,随着需求量不断增加,在项目中还会听到如下吐槽:

1、研发团队排期瓶颈,非研发角色感受不到研发技改提效的变化。

2、引入ISV 团队又担心质量和安全问题,而且培训成本高、周期长,在核心复杂系统中,不敢也无法短时间大规模引入。

不过,如果有一种方法能够实现生态化交付和全民开发的愿景,那就可以解决上述问题了!这种方法可以让所有角色,无论是技术还是非技术的,以安全、更简单的方式参与进来。

这样一来,就可以在不增加团队人数的情况下,提高团队的吞吐量,实现更高效的需求交付,是不是很奇妙呢?

挑战

为了达到生态化交付和全民开发的愿景,我们需要解决如下几个问题?

1、如何让非技术角色实现研发的交付?

2、如何让全民开发者完整实现一个需求闭环,而非仅仅实现其中一部分需求?

3、如何解决交付中核心系统安全问题?

我们带这几个问题看下解决方案。在讲技术方案之前,我们先站在客户角度,从整体看一下,一个系统的需求都来自哪里?而我们都知道比起从0-1新做一个系统,二次扩展类需求更加复杂,我们今天就以二次扩展类需求入手和大家一起分享下,在京东智能供应链Y做的一些实践。

方案

设计思路

软件架构生态化-多角色交付的探索实践_架构

如上图就是任意一个系统中二次扩展类需求分类的最大集合,主要有8类:API类、参数类、模版类,界面类、流程类、规则类及数据库类。

1、API类:主要是新增API和在原有API的扩展,例如,原有API上新增一些属性。

2、模版类:主要是新增一个模版。例如,制作一类新的合同模版或问卷调研,各部门填报填写。

3、参数类:主要是新增KV类的参数。例如,新增“是否包括自营商品“参数,并让这些参数在某些逻辑中起到作用。

4、UI类:主要是新增菜单、按钮、布局、图表、校验规则等。例如新增一个外呼按钮,并调用外呼系统 接口。

5、流程类:在原有流程节点中新增新的节点。

6、规则类:在原有的规则前、后等,新增新的规则。

7、数据库类:在原有表中增加新的属性,或者新增一个子表。

8、最后还有一类其他:无法划分为某一类,需要复杂的逻辑处理实现。例如 数据重新聚合与逻辑运算

我们就基于这些研发的需求类型,设计一套技术体系,实现生态化交付和全民开发的愿景。

技术方案

软件架构生态化-多角色交付的探索实践_API_02

我们把软件系统分成三层,建立完整的全链路扩展技术体系,在把这些能力通过零低代码手段把他们进行打通、包装和开放,就可以实现屏蔽源代码的情况下,对系统进行安全、简单、闭环的二次增强,进而达到全民开发的目标。具体包括:

1、界面层:该层扩展主要手段就是零低代码技术。

2、接口层:该层扩展主要手段就是依靠不同模型之前的映射来解决,而模型的扩展就可以依靠对象扩展来解决。

3、服务层:该层扩展主要依靠流程、规则引擎来实现,这个业界有很多开源工具,例如activity和drools等。另外还有很多场景是复杂的逻辑变更,这个可以依靠插件、事件驱动模式来实现。

4、模型层:该层扩展主要手段就是依靠元数据驱动,通过依赖元数据对象,而非底层物理数据库。

以上能力,在通过最后零代码技术的加持和封装,实现可视化配置,形成一个工作空间,在对工作空间进行分角色授权,让不同角色以熟悉的语言进行操作,这样就可以实现生态化交付和全民开发的愿景。

所以说扩展的技术体系不是一个单一的解决方案,它需要零低代码、插件、业务事件、元数据驱动、流程规则引擎等技术共同协作才可以。而难点是这几个技术需要互相搭配好,实现扩展的互认,例如我们在对象模型扩展中增加了一个属性,这个属性需要在界面展示、需要在接口中透传、需要在规则中校验,这就需要做好顶层架构设计。

我们通过几个案例来描述,它需要和可以实现哪些能力?

案例

案例1:让非技术参与进来,体会技术提效的变化

需求描述:基于业务变化,一个核心系统,需新增 “渠道类型” 这个属性,改动涉及:

1、数据模型变化(技术上:数据库字段变化)

2、后端服务及规则变化(技术上:接口变化、对象变化、判断规则变化等)、

3、展现界面变化(技术上:UI 界面增加带数据权限的查询条件、表格新列及图表增加等),

也就是需要软件不同层次的进行变化。通常,这些特别技术的需求变更,只能技术排期做,但是通过这种新方式。产品经理/客户就可以在无需等待,7 分钟内,全程零代码的模式下完成。

1、在对象扩展中,增加新的属性。

2、在规则引擎中,基于新的属性,编排增加新的校验。

3、在界面扩展中,把在对象扩展中的新列拖拽出来,展示为查询条件,并制作一个新的饼状图展示到界面。

通过这个案例,也就是说我们可以把黑盒的研发工作,安全、高效的交付给其非研发角色自助完成,提升交付效率,减低沟通成本。另外还有一点值得一提,这种方式也让非技术人员,可以直观的感受到技术提效的变化。

案例2:不触及代码情况下,实现安全一站式开发

需求描述:基于业务变化,一个核心系统,需要与客服系统集成,实现对某类特殊业务的客服外呼,改动涉及:

1、新增一个外呼按钮

2、新增前端规则校验,只有履约数据滞留2天的才需要进行客服介入。

3、调用外呼接口,组装数据增加复杂逻辑并传递。

4、发送邮件通知相关角色。

同样,这些也是特别技术的需求变更,原来只能原厂技术开发来排期做,但是通过这种新方式。客户IT或ISV,就可以在不触及代码的情况下,通过统一平台一站式完成需求的变更。

1、在界面层中,通过零低代码手段完成按钮新增。

2、在界面层中,通过零低代码手段完成规则校验的新增。

3、在服务层中,通过插件方式,实现代码逻辑处理,并调用外呼接口。

4、在服务层中,通过事件订阅方式,监听外呼状态,配置邮件模版,实现邮件自动发送。

通过这个案例,我们可以看出来,业务需求具有多变性,不能仅仅依靠一种手段完成扩展,需要多种方式进行搭配,才能实现大幅度提效。

结束

其实零低代码、插件、业务事件、元数据驱动、流程规则引擎等技术在行业中并不是一个新事物,而这些技术可以互相搭配,实现完美集成和互认,让用户在一个平台针对不同业务的场景使用合适的技术,完成需求的自助化,是个难点。它不仅仅需要平台技术,还需要对业务系统需要合理的抽象、抽取。

最后,我们在回过头看看最开始的技术挑战。是不是都解决了呢?

1、如何让非技术角色实现研发的交付?答:通过零低代码模式进行封装和开放。

2、如何让全民开发者完整实现一个需求闭环,而非仅仅实现其中一部分需求?答:需要全链路开放和打通,并不仅局限一种技术手段。

3、如何解决交付中核心系统安全问题?答:屏蔽源代码的完整扩展体系。

标签:需求,生态化,实现,扩展,技术,研发,软件架构,交付
From: https://blog.51cto.com/u_15714439/6205809

相关文章

  • 项目播报 | 璞华×江苏鼎为云,打造数字化“采云链”体系,赋能新能源机电行业生态化
    日前,璞华SRM事业部与江苏鼎为云智能科技有限公司成功达成采云链产品合作。双方将携手并进、协同合作,为项目的成功落地全力以赴。同时,以此次项目为契机,双方也将继续探索更深层次的合作。璞华采云链SRM(SupplierRelationshipManagement)以产品、技术赋能,再次助力新能源电机行业上......
  • 【Git代码仓库托管】上海道宁为您提供构建、扩展和交付安全软件的完整开发人员平台
      GitHub是用于构建、扩展和交付安全软件的完整开发人员平台通过提高开发人员速度的工具推动创新加快高质量软件开发  GitHub提供无限的存储库一流的版本控制和世界上强大的开源社区因此您的团队可以更高效地协同工作  开......
  • Smartbi电子表格软件架构与差异化特色​
    选择和Excel结合首先Excel一直被模仿,从未被超越。虽然市场上的报表软件很多,但存在太多的不完美。国外的产品功能复杂、难于学习(控件方式),做不了中国式复杂格式的报表;国内厂商相继模仿Excel,虽然创新了“类Excel”的报表模型,解决了复杂格式的问题,但那终究不是Excel,Excel众多的优秀特性......
  • APP产品设计到开发交付的流程
    APP产品设计到开发交付的流程可以分为以下几个步骤:需求分析阶段:在这个阶段,产品团队需要明确产品的目标、功能需求、用户群体、竞争对手等信息,以确定产品的设计方向。需求评审阶段:开发团队需要参与需求评审,以评估需求的可行性和实现难度,提出技术上的建议和优化方案,确保产品的......
  • 嵌入式软件架构设计协议定义
    在嵌入式软件架构设计中,协议定义是非常重要的。协议定义规定了通信双方之间的消息格式以及通信方式,保证了系统之间的可靠性、安全性和互操作性。以下是一些常见的嵌入式软件架构设计协议定义:UART协议:UART是一种简单的串行通信协议,适用于低速、短距离的通信。UART不需要外部时钟信号......
  • 软件架构性能
    今天要介绍的是六大属性之一的性能,根据读一些别人博客以及课上我们组的同学介绍我认为其实易用性就是用户对于一个软件操作起来在不影响他原本的功能以及性能的情况下操作起来越是简单便捷则这个系统的易用性越高。性能可以进一步分为易理解性:软件产品使用客户能理解软件是否适......
  • 星环科技自研技术,加速大数据从持久化、统一化、资产化、业务化到生态化
    从2013年成立开始,星环科技就专注于大数据基础技术与企业数据业务的更好结合,同时面对中国更为复杂的数据应用场景,研发了多种更贴合国内大数据应用需求的大数据管理技术,在大数据技术领域有多项基础技术突破。星环科技在坚持技术自研的道路上,创造了多个世界级的技术成果,本篇介绍星环......
  • 低代码平台源代码交付的重要性,别再傻傻被骗了……
    一、前言作为这两年IT界的风口,低代码在众人眼里已经不是什么陌生的概念。对标于传统的纯代码开发,低代码是一种快速开发软件(应用程序)的方法,平台通过对大量功能与场景做提前封装,使得用户可以在可视化的基础上,通过拖拉拽就能完成开发,手动编码非常少。这种可视化的开发大大方便了开......
  • 嵌入式软件架构设计协议定义
    在嵌入式软件架构设计中,协议定义是非常重要的。协议定义规定了通信双方之间的消息格式以及通信方式,保证了系统之间的可靠性、安全性和互操作性。以下是一些常见的嵌入式软件架构设计协议定义:UART协议:UART是一种简单的串行通信协议,适用于低速、短距离的通信。UART不需要外部时钟信号......
  • IP交付标准总结血泪史。
    RTL顶层代码,IP内部需要IP自己完成连接并保证正确,CM/PLL/MCU/SRAM/TX/RX内部模块不接受外部进行拼接,DFT内部自己处理。IP用到的宏,名称功能文档要说明清楚。优先使用硬核IP。软核需要IP保证质量。不能只提供各个模块,需要外部拼接。文档,集成设计文档,用户手册,寄存器手册,接口管脚与......