[]
低代码是一种软件开发技术,可以大幅提升软件开发效率,缩短软件项目的交付周期。和许多软件开发技术一样,低代码也不是“凭空产生”的,而是软件开发技术发展的必然产物。在软件技术发展史的尺度下观察低代码的诞生过程,能够帮我们更深入地理解低代码的定义。
2014年,Forrester提出了低代码的概念。低代码是一种软件开发技术,衍生于软件开发的高级语言,让使用者通过可视化的方式,以更少的编码,更快速地构建和交付应用软件,全方位降低软件的开发、配置、部署和培训的成本。
了实现这一目标,低代码开发平台通常由4部分构成:
可视化设计器:具备可视化定义UI,工作流和数据模型的设计器,且在必要时可以支持手写代码。
服务器程序:承载可视化设计器构建的应用,供最终用户通过多终端访问,具体形式如私有化部署的服务程序、运行在云端的容器或服务等。
各种后端或服务的连接器:能够自动处理数据结构,存储和检索。有些低代码开发平台将其集成到了可视化设计器中。
应用程序生命周期管理器:用于在测试、暂存、构建、调试、部署和维护应用程序的自动化工具。
经过多年的发展,超百家厂商推出了大量的低代码开发平台产品。纵观这些低代码平台,除了都具有这些基本要素以外,没有两个产品是完全相同的。有些工具作用非常有限,更类似于与数据库配套的前端界面,如90年代的FoxPro;有些工具则仅专注于小众的业务需求,如客户档案管理;甚至有一些专用工具只是用低代码的术语来描述,但与实际的应用程序开发几乎没有关系。为了与其他软件开发技术进行区分,避免对IT决策者带来误导,Gartner将低代码的概念具体化,提出了低代码开发应用范围(构建包含有用户界面、业务逻辑、工作流和数据服务的完整软件应用)。针对企业级软件开发,Gartner还提出了低代码开发平台所需的必备功能。
Not be used only or mainly for building specific industry applications, and it must not be only a product bundled within some other solution or platform. 不能仅用于或主要应用构建特定行业的应用,不能仅限于在依赖其他解决方案或平台上运行
Support development and deployment of applications by professional developers in both central IT and line of business — not just for citizen developers. 需要能提供给IT技术人员使用,不能只给平民开发者使用
Develop, version, test, deploy, execute, administer, monitor and manage the applications and their relevant artifacts. 全生命周期:覆盖应用和相关资源的开发、版本管理、测试、部署、执行、管制、监控和管理的全生命周期
Embed data storage features without relying on additional procured services (i.e., includes a database). 内建数据存储:内建数据存储机制,不能依赖其他的数据库等存储服务
Support the design of data schema and application logic. 数据与逻辑设计:支持用来设计数据结构和应用逻辑
Create rich application UIs (i.e., not only a forms builder or building an administration UI). 完整的界面设计:支持创建完整的应用界面,不能仅支持创建表单或管理界面
Enable the invocation of external third-party services via APIs or event topics. 第三方集成:支持引入第三方API或事件驱动机制
Support some automation of platform patching and versioning. 自动运维:提供自动化的应用升级和版本管理机制
Provide single-step deployment across environments (development, test, staging, production). 多环境部署:支持针对多环境的一键部署,包括开发环境、测试环境、验证环境和生产环境
Access a platform repository or marketplace for sharing components, modules, connectors and templates 社区共享:提供可供访问的应用市场,用来共享组件、模块、连接器和模板
和许多软件开发技术一样,低代码也不是“凭空产生”的,而是软件开发技术发展的必然产物。在软件技术发展史的尺度下,观察低代码的诞生过程,能帮我们加深对低代码开发技术的了解。
编程语言是每一位专业开发者最熟悉的概念,也是软件技术发展史的重要见证者。
计算机诞生于1946年,计算机的核心部件是中央处理器(CPU)。计算机之所以能够工作,是因为我们给CPU输送工作指令。这里的工作指令就是机器语言,是由0和1组成的二进制串。机器语言可以被机器直接识别,但对人很不友好,非常繁琐也容易出错。
在计算机诞生后不久,人们就发明了汇编语言。汇编语言参考了人类语言的符号,用助记符号代替二进制串。程序在执行前需通过编译程序将汇编语言还原成机器语言,再输送给CPU执行。汇编语言比机器语言更容易理解和编写,但是它仍然高度依赖于机器语言,与CPU体系架构一一对应,不同的CPU都需要不同的汇编语言和指令集(CPU能够识别的操作)。
随后,语言发展到第三个阶段:高级语言。在1957年,计算机专家发明了第一个高级编程语言Fortran语言,随后陆续发明了BASIC、C语言、C++语言、Java语言等。高级语言是指面向用户的语言,它与人类的语言规则更接近,比如,C语言当中有If … then … else …;Basic语言中的While … do等。这样的语法和人类的语言表达方式基本相同。直到今天,新的语言仍然层出不穷,全球已经累计有几千种高级编程语言。
从机器语言到高级语言,编程语言越来越接近人类的语言,学习和理解的难度逐渐降低,随之而来的,还有编程工作效率的显著提升。可以说,高级语言的生产力已今非昔比。在高级语言的基础上,为了进一步提升软件开发的效率,软件开发行业做了很多有益的尝试,其中最成功的,当属可视化、组件化和框架化三个方向。
“可视化开发”是上个世纪90年代软件界最大的热点之一。最初的可视化专注于用户界面开发领域,可以让开发者通过拖拽的方式快速构建出用户界面,一些成熟的产品甚至可以做到“所见即所得”。即便与最先进的高级语言对比,使用可视化设计开发图形界面的生产率也能高出许多。
在品尝到可视化的“甜头”后,可视化开发的技术和工具迎来了大发展,其应用场景早已不仅仅应用于用户界面设计。如今的可视化开发已经涵盖了数据库设计、工作流设计、业务逻辑设计等各个领域。
全局来看,可视化开发在提高开发效率的同时,还降低了开发的技术门槛,这就让软件开发团队的构成有了更多的优化空间,如让美工参与构建用户界面,让业务人员设计业务流程等。新的团队构成除了能降低总体开发成本,还能通过减少沟通环节,提升软件团队的协同能力,加快软件交付速度。
与可视化开发相伴而生的,是软件开发的组件化。组件(Components)伴随着高级语言产生,它的本质是可重复使用的代码。当一段代码可以在一个软件中使用,也能成为另外一个软件的一部分时,就可以被抽象成一个组件。组件的价值不仅仅在于提高代码的复用性、提高开发效率,还通过组件化的设计,也降低了整个系统的耦合度,提高了系统的可维护性。
目前组件化的开发方式非常成熟,覆盖面从文字输入等基础功能、统计函数等数据处理到报表等复杂应用场景。组件中涉及用户交互的最为常见,也被称作“控件”(Controls)。比如,开发者使用可视化设计的方式开发业务报表时,可以直接使用葡萄城提供的ActiveReports报表控件。ActiveReports可以作为一个组件的形式嵌入到各个应用程序当中,同时它也提供了一种可视化的报表设计模式,同时代表了可视化和组件化两大趋势。
可视化和组件化聚焦在具体的功能实现,而框架化则为整个软件和开发流程提供支撑。框架(Framework)是指可被应用开发者定制的应用骨架。就类似人类的骨骼系统一样,框架规定了应用的体系结构,阐明了整体设计、协作构件之间的依赖关系、责任分配和控制流程。
对于开发团队,框架化的价值在于提供软件的总体架构,简化了设计工作,降低对软件架构师的能力依赖,使得开发团队即使没有高水平的架构师,也可以让软件有一个很好的架构。同时,框架通过抽出非功能需求,让开发者能更加专注于业务逻辑的实现,提升了开发效率。总之,框架本身就是最佳实践的一个提炼和综合,基于专业的框架进行开发可以有效保障大型软件的处理能力、扩展性和可维护性。
可视化、组件化和框架化,通过将大量的开发工具、控件和技术文档深入到软件开发过程中,以灵活性和极限性能的小幅牺牲,换来了开发效率的大幅提升。然而,这种“量变”的效率提升,对于加速增长的软件需求,依然杯水车薪。在需求积压严重,但灵活性要求相对较低、硬件处理性能过剩的企业服务(toB)市场,开发团队急需一个可以和传统编码开发并行的技术方案,用灵活性和性能的妥协,换取成倍提升的开发效率。低代码,应运而生。
模型驱动的低代码,衍生于软件开发中的可视化技术。软件开发进入高级语言阶段后,可视化成为软件开发技术的主流趋势。可视化技术及其背后的代码自动生成技术(包含C#等程序代码和XML等描述性语言),大幅降低了人力操作,提升开发效率的同时,优化了软件质量。在此基础上,部分软件开发技术提供商将可视化技术的应用范围从编码阶段中的前端界面和数据库结构设计,扩展到软件开发的全过程,提供覆盖软件全生命周期的可视化开发解决方案,帮助开发者降低编码工作量。这种方案延续了现有软件开发模式中从数据模型、领域模型到用户交互的基本模式,所以被称之为模型驱动的低代码平台。
这一类低代码开发平台的系统架构与传统编码开发保持一致,关注软件开发全生命周期,应用场景与编码开发接近,可广泛应用于企业软件开发。此外,这类低代码平台的基础概念、开发流程与高级语言类似,对拥有计算机相关背景的用户更友好,是传统编码开发团队转型的首选。
国内市场中,选择该路线的低代码平台厂商较少,典型代表有活字格、ClickPaaS、Mendix等。
详细了解:模型驱动低代码平台的技术原理
表单驱动的低代码,源于广泛应用于ERP、OA等软件中对表单、流程等元素的可配置技术。借助这些能力,成品软件可以在不做二次开发的前提下,满足大部分的个性化需求。可配置技术有效降低了开发需求,缩短了软件实施周期,已经成为行业软件的“标准”。部分企业软件厂商和互联网平台提供商将可配置的表单、工作流和统计报表等企业中常用的能力封装成相对独立的产品,用来解决成品软件中无法实现的个性化需求。在国内,此类产品最早专注于数据采集等应用场景,典型厂商有“金数据”、“问卷星”等,在低代码概念火热后,即加入低代码行列。
通常,这种方案将“软件开发过程”转换为“软件配置过程”,用户无需考虑环境搭建、模型开发、用户交互开发、测试、部署等软件开发的环节,而是从配置表单开始,辅以工作流和报表,最终完成平台与业务需求的匹配,所以也被称为表单驱动的低代码平台。大部分表单驱动的低代码平台厂商为了向没有IT背景的业务人员进行推广,扩大受众范围,在市场宣传中通常会将其宣传为无代码或零代码。
无代码将数据模型、业务模型与表单界面进行绑定,灵活度较差,通常无法完成复杂的业务逻辑、数据处理和高度定制化的界面布局,仅适用于有限的业务场景,如办公自动化等。因为不涉及专业的软件设计、开发和运维,计算机相关的背景对于表单驱动低代码平台使用者来说并没有展现出显著的优势,所以平台的使用者以业务人员为主。
type=info
值得注意的是,部分表单驱动的低代码厂商为了尝试挖掘平民开发者带来的增量,将其产品宣传为无代码/零代码。所以,无代码/零代码是低代码的子集,通常可以视同为表单驱动的低代码。
国内市场中大多数低代码厂商都选择了这个路线,典型代表有捷得、轻流等。
详细了解:表单驱动低代码赋能业务人员
从底层逻辑上讲,模型驱动的低代码,是通过为开发者赋能,提升开发效率来满足更多软件开发需求;而无代码则以减少定制化开发的需求量,来缓解软件开发需求与IT产能的矛盾。
低代码与无代码的差异性较大,国际主流研究机构将两种技术路线的产品分开调研,如中国信通院针对低代码和无代码分别制定行业标准;Gartner将模型驱动视为低代码开发平台的基础要求;Forrester将表单驱动的低代码平台视作“面向业务开发者的低代码开发平台”,与模型驱动的“面向专业开发者的低代码开发平台”进行了区分。