GeneXus的科技基础(GeneXus背后的理论)

article/2025/9/18 20:56:11

GeneXus 是一个用于开发和维护软件系统的工具。

GeneXus 基于业务系统知识的自动管理。这怎么可能?通过在数学和逻辑方面定义系统开发和维护问题,以确保严格处理所考虑的问题。

GeneXus的目标是获得一个充分代表现实并且可以随着时间保持最新的模型。如何做到这一点?通过对现实的准确描述,通过描述用户对数据的不同视图。描述是在 GeneXus 对象中捕获的,具有必要的表达能力以正确表示该现实。然后捕获并综合这些视图中包含的知识以构建模型。

GeneXus 通过知识库与模型一起工作,知识库由存储知识的数据库和推理机制组成,推理机制允许从存储的知识开始,获得可以从逻辑上推断出的任何其它知识。

此推理是一种确定性操作,其中使用了数学方法和工具、谓词逻辑、计算机科学和人工智能。推断的知识范围从简单到非常复杂的事物,例如数据库设计或任何程序的生成。

所有这一切都是通过内部研究实现的。自 1984 年以来,由工程师和数学家组成的团队为该项目投入了数百人的研究和开发。GeneXus 的第一个版本是在三十多年前发布的。截至2005年,全球有 7,000 名客户和超过 85,000 名开发人员围绕 GeneXus 建立了自己的职业生涯。

GeneXus 通常用于构建大型关键任务系统。

简而言之,GeneXus 是一个用于软件系统开发和维护的工具,实现手段是通过描述而不是编程的方法。

1、简介

我们创建 GeneXus 的研究始于 1984 年。当时,我们正在寻找一种产品,以便帮助我们的客户应对我们预期随着时间的推移会发生的重大变化。当时的情况与现在大不相同,大多数应用程序都是面向批处理的,交互式应用程序具有非常基本的文本屏幕和对话框。一般来说,最终用户是为组织工作的员工。

现如今,世界上大多数居民都是许多系统的潜在用户。1980年代的大公司使用几千兆字节的数据库,而今天的公司数据库已达到几千PB字节。也就是说,它们的体积翻了百万倍!

我们的目标是将应用程序的开发和维护“工业化”,以降低成本并避免呈指数增长的人为错误。

我们一开始面临的一个简单问题是哪些事情可以自动化,哪些不能?我们的目的是使用 GeneXus 来自动化所有可以自动化的东西。

GeneXus 是一支卓越的高素质专业团队努力的产物,他们以杰出的慷慨、热情、承诺和信念将他们的科学和技术专长用于项目服务。尽管在这些过程中遇到了困难,但他们始终对自己的工作充满热情。

但我们也必须说,今天的 GeneXus,尤其是未来的 GeneXus,远远超出了实验室所能完成的范围。如果没有与 GeneXus 社区日益重要的互动,GeneXus 就不可能实现。GeneXus 社区由全球超过 85,000 名开发人员组成,围绕它开展专业活动。

有时我们会发现一些潜在客户,虽然他们对 GeneXus 提供的可能性非常感兴趣,但害怕将其作为战略解决方案,因为他们发现它与他们所知道的如此不同。

如果我们考虑历史上所有伟大的创新,这方面并不新鲜。著名科幻小说作家亚瑟·C·克拉克 (Arthur C. Clark) 提到了这一点,他说:“任何足够先进的技术都无法与魔法区分开来。”。我们的技术没有任何神奇之处:它是明确目标、持续承诺、持续努力的结果,以及少量很好的想法和数百人年的研究和开发,利用所有可用的科学和技术,例如数学、逻辑、计算机科学和人工智能的方法和工具。

(译者注:这里的人工智能是基于ProLog人工智能语言的专家式人工智能技术,而非基于机器学习的人工智能技术。)

我们于 1984 年开始使用这个工具包,并随着我们自己的理论发现和我们随着时间的推移构建的新工具不断增加它。我们利用这个基础建立并不断改进业务系统现实的元模型,这使我们能够在任何给定时间获取每个公司所需的特定模型,并自动生成和维护他们的应用程序(数据库、程序、和过程)。

2. 目标

主要目标是为通常影响所有系统开发中遇到的许多问题找到解决方案,以下是所面临的常见问题:

  •  重点关注技术而不是业务;

  •  应用的低级技术导致非常低的生产力、人为错误和开发人员缺乏动力;

  •  可用的文档往往不完整和过时,部分知识只存在于一些开发人员的脑海中;

  •  随着新技术的引入,这些开发人员的技术知识在短短几年内就会过时。

那么,如何才能避免这种情况呢?

答案是:通过自动化可以自动化的一切。

在系统开发中什么可以自动化,什么不能自动化?

GeneXus 30 多年帮助数万家客户并被全球数百万名开发人员使用的经验表明:

整个系统的开发和维护都可以自动化:

系统开发和维护是指数据库、程序和流程的设计、生成和维护,所有这些最终都可以被视为非创造性的日常任务,因为它们可以从合适的模型中自动推断出来。

每家公司都需要一种在每种情况下都不同的特定模型。构建模型意味着理解客户需求的创造性任务。

3. 如何达到目标

  • 模型

    实现拟议目标的第一个基本要素是设计一个充分代表现实的模型。

  • 客观性

    在我们的模型中引入主观元素将使其在很大程度上取决于构建它的个人。

    随着问题规模的增加,主观性方面与越来越严重的错误相关联。

    我们的模型必须建立在客观要素的基础上。

  • 自动管理

    每个模型都包含大量知识,手动使用时不会显著提高生产力。

    此外,我们将无法避免开发人员所犯的众多人为错误。

    为了实现我们的目标,我们必须创建一个模型,允许程序使用其中包含的知识,而无需人工干预。

  • 增量开发

    现实不是静态的,没有静态模型能够随着时间的推移准确地表示它:

    我们需要模型能够以增量的、非破坏性的方式不断适应现实。

  • 独立于信息技术

    信息技术在不断发展,一般来说,这种演变是破坏性的。

频繁发布新的操作系统、数据库管理系统、编程语言、通信监控和隐喻:面向批处理、与文本屏幕交互、Windows、Web、智能设备……接下来会发生什么?

如果我们的模型依赖于特定时间使用的信息技术,那么在转向新技术时它就会过时。

所以,我们的理论模型必须是完全排除当前信息技术元素的知识的规范。

4. 模型和知识库

它是关于以自动方式处理纯知识,并从存储的知识中推导出所有可以从逻辑上推断出来的知识。模型是包含所有这些知识的理论概念。我们的理论模型于 2010 年公开,以协助 GeneXus 社区和其他有兴趣推进基于知识的软件公司。

我们必须自动处理知识,为此我们实施了知识库,它由两部分组成:

  •  数据库

存储知识的数据库由一个从市场中选择的关系数据库和一组简单但重要的扩展组成,例如,这些扩展允许它有效地处理未预先定义的复杂对象和元素。

  •  推理机制

推理机制是基础。一开始,我们可能会认为数据库中存储的是对旧式数据字典的简单改进。添加的强大而复杂的推理机制使一切变得不同:

就像在数据字典中一样,存储在其中的元素可以随时检索并通过交叉引用相互关联。然而,这绝对是不够的:我们还需要能够获得任何知识,尽管没有存储,但可以从实际存储的知识中推断出来。

基本示例

  • 对于一组数据视图,获取合适的最小关系模型。

  • 对于特定的数据视图,生成必要的程序来使用它。

图片

5. 描述知识的客观性 - 透视同构法

几个世纪以来,绘画都是凭经验发展起来的,没有任何规则来支持它们。1417 年在佛罗伦萨,意大利艺术家和建筑师 Filippo Brunelleschi 提出了一套我们今天仍在使用的规则(描述性几何原理)。

但是,透视以何种方式与数据分析相关?

透视法是一个重要的灵感来源。最重要的是它触发了范式转变的开始:随着透视法的采用,我们从一种复杂、令人困惑和主观的方法(我们“按照我们认为的那样”绘制对象) ) 到描述性的、简单的和客观的方法(我们绘制一个“我们所看到的”对象)。

如果我们能对数据做类似的事情,我们就会取得巨大的进步!

实际上,我们可以说:我们需要描述现实的所有知识都可以从用户的视图中获取。

如果我们考虑“在组织中,谁以必要的客观性和详细程度了解数据?”的问题。我们将看到答案是否定的。

因此,让我们尝试将其替换为另一个可以回答 YES 并可以帮助我们构建我们想要的模型的模型:“公司用户对哪些主题有客观详细的了解?”。每个用户都非常了解他或她使用的数据的视图。

让我们回到透视法;在透视和数据分析中,我们“描述视图”。从这些视图中,我们获得了知识。 

(译者注:主题是人对外部对象的观察、体验、分析、研究等后得出的理解、观点、评价等认识结晶。其中既包括主观的认识又包括客观的认识。)

6. 模型概述

一个显而易见的问题是:给定一组数据视图,我们能否为它们推断出合适的数据模型?

这是一个很好的问题,因为它将问题带到了数学领域。

  • 首先,我们必须定义一个参考框架。

    不同数据元素的名称将遵循明确的命名规则,以便自动处理。

  • 其次,每个视图都有一个必须以准确和客观的方式表示的结构。

  • 第三,我们需要一个过程来从一组数据视图转换到相应的模型。

    我们将前面的问题改写如下:

    给定一组数据视图,有适合他们的最小关系模型吗?

    答案是肯定的!

    因此,在仔细定义问题并确定之后,我们回到工程领域并开发了一个程序来生成模型。

综上所述,到目前为止,我们已经对问题进行了仔细的定义,来自数学、逻辑、人工智能和工程领域的广泛方法和工具可以帮助我们来解决这个问题。

7. 自动化管理

一旦我们从通过数据视图捕获的知识中获得了模型,我们是否可以自动生成必要的程序?

一开始,我们并没有考虑生成程序,但是 IT系统一直遭受的所谓“稳定数据库”的失败,使我们坚定信念我们应该解决这个问题。否则,我们的客户将始终背负高昂的维护成本。

几乎从一开始,计算机科学就承担了程序自动生成的问题。生成器基于“模板”或“框架”,从填充空白的方法开始,然后变得越来越复杂,最终解决了安装需求的很大一部分。

但这不是我们想要的,因为我们想要生成“所有”必要的程序,否则我们将无法确保自动维护。

8. 增量开发

稳定的数据库可能吗?

“稳定的数据库”是计算机科学中反复出现的问题。这个想法是这样的:

如果我们为特定企业提出“正确的数据库”,那么该数据库在未来将保持稳定。因此,随着时间的推移,我们将简单地编写使用它的程序。

关于这个主题已经写了很多。

然而,这个论点是错误的,因为一个组织只有在它停滞或死亡的时候才有一个稳定的模型!因此,最好不要浪费任何精力去寻找这样的稳定模型,而是准备好使用可能的、真实的、不稳定的模型。

那应该如何做好数据库不稳定的工作?

这是全新的东西。这个想法是在概念层面拥有一个知识库,以增量方式动态适应公司的需求,并能够自动生成数据库结构和程序中的必要更改,以便一切随着时间的推移按照最佳方式正常工作。

这是一项巨大的技术/科学挑战,我们在 30 年前成功战胜了这一挑战。关键是完全独立于像文件和访问机制等物理元素的知识表示。

9. 独立于信息技术

信息技术以一种非常动态且无政府主义的方式发展:所有大公司都发布他们的创新产品,试图以最具商业效率的方式与其他公司竞争。经常引入破坏性创新,会给用户带来严重的问题。

我们的目标是让我们的知识库独立于给定时间使用的技术,这样,只需构建新的生成器,我们就可以使用旧知识为未来可能流行的新技术生成应用程序。30 多年来,我们的客户一直受益于此功能。


http://chatgpt.dhexx.cn/article/rLt3AN9q.shtml

相关文章

GeneXus学习记录——环境搭建

开始学习GeneXus,第一步就是环境的搭建。 说明文档 查看官网上学习中心,下方有一个安装及申请授权的说明文档。 按照文档中的步骤来做,除了GeneXus软件本身,在此之前还有一些相关环境的安装和配置指示了参考链接,这里…

搭建测试环境,多人测试环境

前文:在只有一台服务器并且只有一个主域名又不方便申请多个二级域名的基础上来实现一个测试环境 利用cookie来实现切换分支,访问不同的目录代码,实现代码的隔离性。 下面开始演示效果 1,准备了三个目录分别是不同开发人员的代码 …

如何配置测试环境

前言: 我们目前测试是在测试环境进行测试,研发给到测试的有前端包、后端包、sql库就完了。接下来测试自己去配置环境 文章目录 一、配置数据库1.1用记事本打开sql,修改IP地址1.2导入到测试服务器的数据库下1.3导入数据库数据 二、配置后端包…

测试环境搭建二

一.在虚拟机上安装centos7 如果你的磁盘空间足够大,可以写大一些 最后在虚拟机界面上双击CD/DVD,选择使用ISO镜像文件,点击浏览,找到你镜像所下载的位置 然后开启虚拟机,进行相关的设置即可 你可以参考博客&…

软件测试之测试环境

背景 当设计的测试用例通过评审后,测试人员会依据测试用例来测试开发人员开发出的软件系统,那待测试的软件系统会部署在哪里呢?测试人员肯定不会在开发环境测试,开发人员也不会在测试环境开发,因为开发人员开发完成后…

如何搭建测试环境?搭建测试环境的步骤跟注意事项(视频教程版)

什么是测试环境 测试环境,指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称,简而言之,测试环境硬件软件网络数据准备测试工具。 硬件:指测试必需的服务器、客户端、网络连接等辅助设备。 软件&#…

SpringCloudAlibaba:Nacos实现原理详解

欢迎关注方志朋的博客,回复”666“获面试宝典 Nacos 架构 Provider APP:服务提供者 Consumer APP:服务消费者 Name Server:通过VIP(Virtual IP)或DNS的方式实现Nacos高可用集群的服务路由 Nacos Server&…

Spring Boot入门

1.什么是Spring Boot Spring 诞生时是 Java 企业版的轻量级代替品。通过依赖注入和面向切面编程,用简单的Java 对象实现了 EJB 的功能。 虽然 Spring 的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring 用 XML 配置,而…

Java NIO?看这一篇就够了!

点击上方“方志朋”,选择“置顶或者星标” 你的关注意义重大! ✎前言 现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能&am…

今日头条技术架构分析

点击上方“方志朋”,选择“设为星标” 回复”666“获取新整理的面试资料 来源:blog.csdn.net/mucaoyx/article/details/84498468 一、产品背景1、文章抓取与分析2、用户建模3、新用户的“冷启动”4、推荐系统5、数据存储6、消息推送 二、今日头条系统架构…

写了 5 年 Java,这些坑还是没躲过……

我常常在想,一个人具备怎样的素质和能力,才称得上高级工程师?估计有不少人会说,“基础过硬、熟练掌握一门编程语言、至少看过一个优秀开源项目的源代码、有过高并发工作经验、沟通能力强”。 上面这些都很对,这些也都是…

专访方志朋:2018年仍然是微服务飞速发展的一年

方志朋,毕业于武汉理工大学硕士学位。 CSDN博客专家、Spring Cloud中国社区联合创始人。 《深入理解Spring Cloud与微服务构建》作者。 Spring Cloud作为Java语言的微服务落地框架,在Spring开源社区和Pivatol、Netflix两大公司的推动下飞速发展&#xf…

顶配版阿里大佬面试笔记+300道硬核面试题,跪着啃完了。。。。

金九银十刚过去,有一部分朋友在这期间肯定经历了一番大厂面试的洗礼,不知道大家是经受住了考验如愿以偿了,还是折戟沉沙无功而返呢? 身边已经有技术大佬顺利通过了阿里P6/P7的面试,在30岁之前成功跳槽进大厂&#xff1…

我是一个线程池

点击上方蓝色“方志朋”,选择“设为星标” 回复“666”获取独家整理的学习资料! 线程池的自我介绍 我是一个线程池(ThreadPoolExecutor),我的主要工作是管理在我这的多个线程(Thread)&#xff0…

好用到爆的 Java 技巧

点击上方“方志朋”,选择“设为星标” 回复”666“获取新整理的面试文章 来自:Lrwin的技术博客链接:http://lrwinx.github.io/2017/03/04/细思极恐-你真的会写java吗/ 本文不是一个吹嘘的文章,不会讲很多高深的架构,相…

Spring Cloud和Spring Boot高级视频

内容是之前发过的,大家说找不到,重新发一次 spring cloud 视频内容: spring boot 视频内容: 下载方式: 微信公众平台回复“C”免费获取springcloud,回复“B"免费获取springboot 4000G java高级架构师进阶 视频下载…

华为最美小姐姐,被外派墨西哥后...

欢迎关注方志朋的博客,回复”666“获面试宝典 来源丨《华为人》、心声社区 作者丨潘昱 2018年,坐在UCLA大学教室里,我和华为进行了一场视频面试。去投行从事对冲基金业务,还是去四大会计师事务所做一名税务咨询师?当时…

Java 和 C 长期霸权结束

欢迎关注方志朋的博客,回复”666“获面试宝典 TIOBE 公布了 2021 年 10 月的编程语言排行榜。 在进行了几个月的追逐之后,Python 成功在 10 月份超越了霸榜已久的 C 语言,夺得了 TIOBE 编程语言排行榜首的位置。TIOBE CEO Paul Jansen 评价称…

Spring Cloud之路---1.注册中心eureka与服务提供者

根据方志鹏大神的观点而来,他的博客地址: http://blog.csdn.net/forezp/article/details/70148833 简介:Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路…

SpringBoot 生产中 16 条最佳实践

欢迎关注方志朋的博客,回复”666“获面试宝典 Spring Boot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践。这些内容是基于我的个人经验和一些熟知的Spring Boot专家的文章。 在…