摘" 要:传统软件的开发方法成本过于昂贵,开发方式过于僵化,开发周期长且定制化能力弱,难以为企业提供高效、便捷的软件产品交付,难以应对不断变化的市场并满足客户期望。该文通过调研国内和国外低代码开发技术现状及发展趋势,开展低代码开发适用性分析,研究提出低代码开发平台设计与实现的初步方案,为面向敏捷应用的低代码开发平台建设提供技术支撑。
关键词:敏捷应用;低代码;开发技术;云协同;开发平台
中图分类号:TP311.52 文献标志码:A" " " " 文章编号:2095-2945(2023)14-0026-05
Abstract: The traditional software development method is too expensive, the development method is too rigid, the development cycle is long and the customization ability is weak, so it is difficult to provide enterprises with efficient and convenient software product delivery, and it is difficult to cope with the changing market and meet customer expectations. Based on the investigation of the current situation and development trend of low code development technology at home and abroad, this paper analyzes the applicability of low code development, and puts forward a preliminary scheme for the design and implementation of low code development platform, thereby provides technical support for the construction of low code development platform for agile applications.
Keywords: agile application; low code; development technology; cloud collaboration; development platform
传统软件开发交付链中,需求经过3次传递,用户→业务→架构师→开发,每一层传递都可能使需求失真,导致最终交付的功能返工。业务的变化促使软件开发过程不断更新、迭代和演进,而低代码开发即是软件开发衍生的其中一条分支。低代码是传统软件的进一步演变,以其高效、灵活和稳定的特点应用到企业的业务场景[1]。低代码开发降低了应用搭建门槛,减轻对专业工程师的依赖,使得业务人员用拖拽的方式即可自行搭建应用平台,满足业务部门的个性化需求,降低人力成本,缩短项目整体开发周期。在后期运维上,低代码平台的迭代速度快,灵活性更高[2]。低代码开发的核心价值是敏捷响应用户需求,增加应对复杂应用场景的能力。
1" 国内外低代码开发研究现状
IBM在1980年首次提出低代码开发,在随后的近30年内发展缓慢,随着技术的沉淀和应用软件的深度应用,低代码迅速发展,主要经历4个阶段[3]。
1)萌芽阶段:1980—2000年,IBM的快速应用程序开发工具(RAD)被命名为低代码。美国公司和实验室开始研究可视化编程,推出第四代编程语言(4GL),后来衍生为可视化编程语言(VPL,Visual Programming Language)。
2)缓慢发展阶段:2000—2015年,企业逐渐涉足低代码开发领域,如1999年成立的Salesforce,2001年成立的OutSystem。
3)升温阶段:2015—2018年,AWS、Google、Microsoft和Oracle等软件行业巨头的加入,使低代码领域的发展逐步升温。
4)快速发展阶段:2018—2021年,低代码领域进入快速发展阶段,根据Gartner研究报告,国外共有18家供应商进入低代码应用平台领域。2018年,西门子以6亿欧元收购低代码应用开发领域的领导者Mendix,快速应用开发的低代码平台OutSystems获得3.6亿美元的投资。
国外对低代码平台的重视程度和研究投入在2018年以来显著增加,美国仍是技术的先驱者和领导者,随着云计算技术的发展,传统平台向PaaS平台转移。多数厂商的产品能够支持私有云和本地部署,个别产品如Lightning Platform、PowerApps仅支持自身的云平台。这种捆绑销售模式虽然在一定程度上有利于自身云平台的推广,但由于云平台和低代码平台的竞品都较多,对低代码平台的推广非常不利。
国内涉足低代码领域比国外晚近20年,自2000年之后才开始研究探索低代码技术,主要经历了2个阶段。
1)早期探索阶段:2000—2015年,少数公司开始尝试对低代码进行研究,如较早的炎黄盈动。
2)快速发展阶段:2015—2021年,国内低代码开发平台进入爆发期,各厂商纷纷推出商用产品。2019年开始,互联网大厂阿里、腾讯和字节的加入,使低代码进入快速发展阶段。传统软件厂商也基于自身产品构建低代码开发平台,如ERP厂商金蝶、用友、明源云和黑帕云,OA厂商致远、蓝凌、泛微,CRM厂商销售易、纷享销客,财税厂商先胜业财,音频厂商声网、容联云、即构科技和融云等。
国内低代码平台起步晚于国外,成熟度与国外主流供应商存在较大差距,但自2018年以来人力和资金投入加大,创业型公司、互联网生态型公司、传统企业管理软件公司开始转型和孵化自己的产品,出现百家争鸣的局面,与国外平台的差距也在逐步缩小。根据海比研究院、中国软件行业协会联合发布的《2021年中国低代码/无代码市场研究报告》显示,我国低代码厂商约有120家,整体市场规模已达19亿元,未来五年复合增长率将达到49.5%,第三方使用人员规模达到42.6万人。
拥有足够竞争力的低代码开发平台通常具备3个核心能力。
1)aPaaS。应用程序平台即服务,用来快速构建后端逻辑。
2)MADP。支持移动应用的开发平台,用来快速构建各种场景化应用。
3)BPM。Business Process Management,业务流程管理,以图形方式设计业务逻辑,然后由事务流程引擎执行模型。
国内大部分低代码产品主要提供BPM功能,还需要继续向aPaaS和MADP拓展。
2" 低代码开发适用性分析
2.1" 低代码适用系统
低代码工具的推广广告对于具有高交付压力的企业非常具有诱惑性“只需拖拽鼠标,非编码人员也可以很快完成一个简单的应用程序”[4]。凡事都有两面性,对于投入过热的领域,我们应当更多的理性判断,看清利与弊,而不是盲目跟从。低代码开发能在一定程度上为企业降本增效、减负增产,但也存在其局限性。
1)多数低代码应用平台仅提供公有云部署,应用和数据运行在供应商的PaaS服务器,数据安全和隐私难以得到保障,尤其是商机商业秘密的数据。
2)数据模型、元数据等底层都是平台专有,应用程序和数据的缺乏移植性,对低代码平台厂商形成依赖。
3)可靠性和安全性存在风险。如果低代码开发平台的组件存在质量问题或安全漏洞,开发出的应用程序的稳定性和安全性也会受到影响,而且难以控制。
4)标准化的UI设计限制了个性化的前端交互需求。
5)固化的指令式执行模式难以处理复杂、特殊的业务场景,业务流程只能适应平台提供的组件,组件的功能和类型限制了应用程序的开发。即使技术足够成熟,能够处理特殊规则和流程,也需要将规则转换为计算机能够识别的逻辑。不能一个工具没有或使仅有少量编码经验的人员变成高级开发人员。
6)平台的易用性和业务的灵活性难以调和,过于简单的设计虽然方便使用但难以应对复杂的业务场景。过于灵活的设计看似功能强大,但又难免会让业务专家难以上手。
7)低代码平台上的功能代码由工具自动生成,数据结构和算法不透明,组件封装,当出现缺陷和故障时,排查处理会异常困难。大量的使用问题、各种平台的报错都堆积到低代码平台的运维团队,运维团队会很快成为整个系统的效率瓶颈。
选择低代码应用平台应当扬长避短,符合以下特征的应用可以考虑使用低代码平台构建:
1)业务变化快,且规则相对简单;
2)开发重复性高;
3)管理模式标准化程度高;
4)需求不成熟,快速搭建原型;
5)对数据的安全性和隐私性安全要求不高;
6)对UI个性化要求不高。
2.2" 低代码适用群体
从市场需求角度,低代码平台可以划分为4大类型。
1)场景应用型,以满足业务场景应用开发为主,开发的应用主要用于企业自用。目前用户量占比最高的低代码平台类型,约为45.7%。
2)产品研发型,以满足复杂的软件产品或解决方案开发为主,主要为其他企业提供应用开发。
3)平台生态型,提供开发标准和交易平台,以打造开发生态为主,为客户提供一站式的应用开发或产品服务。平台厂商通常开发标准和交易规则,为平台上的SaaS企业、专业开发者、软件开发商和ISV等众多合作伙伴提供技术、渠道等支持。
4)技术赋能型,以提供人工智能算法、区块链等先进技术插件为主,降低先进技术的应用门槛,目前使用者占比最少,仅1.7%。
从使用者角度,低代码平台可以分为5类。
1)软件产品提供商。将低代码开发平台作为一种工具提供给独立软件开发商ISV、系统集成商SI、SaaS企业、渠道代理商和咨询公司等,以实现其各自的目的。如软件企业通过购买低代码开发工具拓展自身的底层开发能力,以占领更多的市场;渠道商和咨询公司把低代码开发作为项目实施的工具,用于提高自身的系统部署效率;系统集成商把低代码开发视为一种新功能,招标时为潜在客户提供更完整的解决方案。
2)软件开发承包商。通过低代码开发对外提供开发服务,承接各类企业的原有信息系统改造或创新应用开发等项目。通过低代码开发平台,可以有效提高开发效率,降低人员投入成本,能够在更短的时间内开发出一个完整的应用系统。
3)一站式应用开发平台服务商。将低代码开发打造成一个平台,任何人或企业都可以到平台上开发应用,并且可以进行二次开发个性化定制服务,而平台则负责提供技术支持。
4)企业自用。企业内部具备设计开发能力,使用低代码平台构建自身需要的应用系统。
5)个人研究学习。个人或教育机构研究和学习低代码平台及技术。
按用户专业程度,技术人员一般可分为3类。
1)特定技术人员,指前端、后端和DBA等专业技术人员。
2)一般技术人员,指有一定逻辑编码能力的开发人员,能够快速理解并运用表达式、事件等概念。
3)非技术人员,指没有开发经验的产品、运营、商务和行政人员。
低代码平台最终的受众群体是企业,只有企业深度应用后才能产生更大的规模经济效益,无论是其他软件厂商集成自家产品后捆绑销售,还是低代码平台提供商自行销售,最终面向的都是企业用户。
3" 低代码开发平台设计与实现
3.1" 系统架构总体设计
本项目部署的目标平台为混合云,系统将以微服务、SaaS为基础平台展开设计,整合Kubernetes、Serverless和NoSQL等技术架构,构建支持云原生低代码技术平台[5]。低代码开发平台系统架构如图1所示。
第一层支持IaaS(Infrastructure as a Service,基础设施即服务),云服务提供商租赁模式的基础设施,本项目使用混合云。
第二层支持CaaS(Container as a Service,容器即服务),使用云厂商提供的托管的容器编排引擎部署和运行容器,管理集群,自动扩展和故障管理,并维护共同的基础设施层,包括治理和安全,本项目使用的为青云,其内置了Kubernetes。
第三层支持PaaS(Platform as a Service,平台即服务),使用云服务提供商云服务中的软件,如数据库、对象存储和缓存等,本项目使用对象存储OBS。
第四层支持SaaS(Software as a Service,软件即服务),将低代码开发模块封装为单独的应用,提供给各个租户。
3.2" 表单引擎设计
表单引擎是快速实现表单开发的轻量级设计工具。目前,有2种思路可实现表单引擎设计,具体如下。
1)基于文件:创建表单时,先创建一个网页文件,在该文件上按需拖放Web控件,表单运行时,给网页随机生成一个地址,并将地址配置到菜单。
2)基于关系数据库:由表单设计器、表单解析执行器、表单模板3部分组成。表单设计器将表单元素存储到关系数据库,并为每个表单生成一个ID;表单模板将从表单设计器上设计的组件关系存储到数据库,由各个组件表组成的数据关系,组合成表单模板;表单解析执行器解析表单模板数据,并在网页上展示。
3.3" 流程引擎设计
流程引擎用于为表单的审批提供支持,本项目流程引擎使用开源的Camunda,可自定义流程模板和节点驱动。
3.3.1" 数据库设计
自定义的数据库表主要对Camunda原生的数据库表做进一步扩展,以支持子任务、任务与审批对象之间的关联、多人会签投票、审批历史等与业务强相关的场景。流程引擎数据库表设计如图2所示。
3.3.2" 功能实现
各租户可根据自身业务流程需要自定义流程模板,并可保存后再次编辑。Camunda工作流引擎的流程元素节点主要包括开始事件、中间/边界事件、结束事件、网关、任务、子流程、数据对象引用、数据仓库引用、参与者和组。其中,最常用的任务节点包括常规任务、发送任务、接收任务、业务规则任务、服务任务、脚本任务、调用活动、折叠的子流程和展开的子流程。
4" 结束语
低代码和零代码平台近年在国内外倍受重视,技术、人力和资金投入逐步加大,预计在今后的3~5年内,随着云计算、AI和编程语言等技术的进一步发展,低代码平台会更加成熟,对构建复杂业务系统的支持会更加友好。企业用户的增加必将促使低代码平台更快的完善和成熟,引领软件开发的趋势和方向。
参考文献:
[1] 2022中国“低代码”领域十大趋势[EB/OL].https://www.grapecity.com.cn/news/grapecity/gc-top-10-trends-in-lowcode-in-china-2022.
[2] 低代码应用平台(LCAP)研究[EB/OL].https://blog.51cto.com/u_15127572/2715585.
[3] 化繁为简:低代码行业研究报告[C]//上海艾瑞市场咨询有限公司.艾瑞咨询系列研究报告,2021:187-237.
[4] The Enterprise Architect[EB/OL].http://www.theenterprisearchitect.eu/blog/mdd-model-driven-development/.
[5] 两种低代码模型驱动开发技术对比[EB/OL].https://blog.csdn.net/ahulovey/article/details/115489551.