使用ChatGPT创建企业架构UML案例


我们测试了 ChatGPT 以生成 PlantUML 代码,用于 UML 和 BPMN 视图。以代码形式呈现图表的优势之一是促进了 MDA(模型驱动架构)的实施。

OpenAI 于 11 月下旬首次推出聊天机器人 ChatGPT,仅用了几天时间就成为了数字星球上的头号话题。
ChatGPT 结果是:

  • 无需打开多个链接即可立即准确给出结果的搜索引擎,
  • 维基百科,
  • 一个内容生成器,
  • 一个翻译,
  • 一个能记住对话所有元素的会话代理,使他能够提高他的答案。每个对话都被存储,以后可能会恢复,
  • 一个计算机代码生成器和验证器,吸收了 2021 年底之前在互联网上找到的所有代码。

我们在这里感兴趣的是最后一个特征。

通过向其提供额外的信息,例如上下文数据或用户偏好,ChatGPT 可以制定更符合所请求主题的响应。类似于 2 个人之间的对话,其中重新表述是让自己被理解的最有效方式,并且通过进行越来越精确的迭代,我们发现 ChatGPT 改进了对预期的理解并提供了更好的结果。

该系统还让人相信它可以自我纠正。如果用户对答案不满意,可以要求重新开始,然后收集更好的答案。ChatGPT 不理解他的错误,但由于它是一个概率系统,可以在几个可能的答案中提供最佳答案,他最终在列表中提出了以下几个。

我们选择用英语与 ChatGPT 交谈,因为我们知道所涵盖的区域相当讲英语。

测试#1
银行贷款流程的 PlantUML 代码
作为使用 ChatGPT 生成 PlantUML 代码的新手,我们从一个相对基本的第一个请求开始。
问题 :
“给我 PlantUML 的代码,对应于银行贷款流程的图”
结果 :


结果是一个对于 UML 初学者来说基本令人满意的 UML 类图。

测试 #2
给他一个例子后同样的要求
问题 :
“你能为银行贷款流程生成类似的 plantuml 代码吗?”
结果 :

我们有一个涉及业务和应用程序级别的视图。组合关系连接进程。应用程序服务为流程提供功能,组件实现服务。 ChatGPT 理解我们想要将标题和图例合并到图表中,这经常被忽视并且实施起来很麻烦。
ChatGPT 会记住所有的交流,所以我们可以要求它依次详细说明每个子流程。

测试 #3
关注验证子流程
问题 :
“像之前的plantuml图,能给我Verification过程的plantuml代码吗?”
结果:

我们还询问了构成银行贷款的所有子流程的详细信息。

测试 #4
用例“请求银行贷款”的文本描述
现在让我们看看 ChatGPT 会为教科书用例“申请银行贷款”提供什么。
问题 :
“让我们在银行贷款中定义一个简单的用例,这是非常成熟且易于理解的东西”
回答 :
当然,让我们考虑从银行获得个人贷款的用例。
以下是该过程可能的工作方式:

  1. 客户首先研究不同的银行并比较他们的个人贷款选择。
  2. 一旦客户找到他们感兴趣的贷款,他们就会完成贷款申请,这需要他们提供个人和财务信息,例如他们的收入、工作经历和信用评分。
  3. 银行使用此信息来确定客户的信用度并评估他们偿还贷款的能力。
  4. 如果客户获得贷款批准,他们会收到一份包含贷款条款的报价,包括利率、每月还款额和还款期。
  5. 如果客户接受贷款要约,他们会签署贷款协议并提供任何必要的文件,例如收入证明或抵押品。
  6. 然后,银行将贷款资金以一次性付款或分期付款的方式支付给客户。
  7. 然后,客户根据贷款协议中约定的条款,随着时间的推移偿还贷款,包括本金和利息。

这只是银行个人贷款如何运作的一个基本示例,但它应该让您了解个人如何使用贷款来获得他们出于各种目的所需的资金,从支付大笔费用到整合债务。


测试 #5
银行贷款业务模式表
显然这是标准流程。对于更具体的情况,添加额外的业务信息就足够了。
以标准降价格式的表格形式向他询问商业模式。
问题 :
“更详细地描述数据模型或使用 markdown 的表格格式”
回答 :

测试 #5
银行贷款业务数据表
显然这是标准流程。对于更具体的情况,添加额外的业务信息就足够了。
以标准降价格式的表格形式向他询问商业模式。
问题 :
“更详细地描述数据模型或使用 markdown 的表格格式”
回答 :
表格点击标题

测试 #6
银行贷款的 UML 类图
让我们继续使用基于 PlantUML 代码生成的 UML 类图的结构方面。
问题 :
“这太完美了,我想用PlantUML 来描述这些关系,你能给我代码吗?”
在第一代中,ChatGPT 在类名中放置了空格,这会导致 PlantUML 在运行时出现语法错误消息。
我们告诉他:
“类 Loan Application 存在语法错误,我认为类名中没有空格。”
结果 :
对不起,你是对的。这是更正后的 PlantUML 代码:。。。。
这是 PlantUML 中的执行:

ChatGPT为银行贷款的业务实体模型生成的代码在 PlantUML 中的表示。

测试#7
银行贷款的 UML 序列图
让我们继续使用 UML 序列图处理行为方面的问题。
问题 :
“要求银行贷款的客户将如何影响上述类,我想将其描述为序列图。你能帮助用 plantuml 的代码描述该图吗?”
结果 :

测试 #8
银行贷款的 UML 状态/转换图
让我们询问 ChatGPT 银行贷款业务状态是什么,并生成 PlantUML 代码以在 UML 状态机图中表示它。
问题 :
“贷款会有新的、关闭的、活跃的、不活跃的、取消的等状态吗?我想用 plantuml 在状态图中描述这些状态。你能帮忙用 plantuml 的代码描述图表吗?”
结果 :

测试 #9
银行贷款思维导图、
我们本可以从这里开始:让我们看看是什么给出了一张始终与银行贷款相关的思维导图。
问题 :
“让我们首先创建一个关于银行贷款主题的简单思维导图, 你能以 PlantUML 格式提供思维导图吗?保持它的结构从核心中心主题分支到其他领域和子领域。让我们从 5 个级别开始。添加开始和结束思维导图标签,并暂时保持在一侧扩展”
结果 :

测验 #10
模式:战略价值图视图
显然,如果我们限制边界,如果我们去除关键字,如果我们不指定业务规则,同时增加抽象级别,我们将获得与请求的上下文相对应的视图。
问题 :
“像之前的plantuml图,能给我战略价值图视图的plantuml代码吗?”
结果 :

测试#11
商业模式画布视图
让我们请他为业务模型画布视图制作一个模板。
问题 :
“像之前的plantuml图,能给我Business Model Canvas View的plantuml代码吗?”
回答 :

测试 #12
提供给 ChatGPT 的信息越多,响应就越好。网上书店的例子。
问题 :
“给我 PlantUML 的代码,对应于在线图书馆的类图,其中包含作者、书籍、用户、ShoppingCartLine、ShippingCart、PurchaseOrder 和 Status。不要忘记多重性。作者写了 0 本书或几本书,而一本书是由0 或几个 authora。用户是 0 或几个购物车的聚合,是 0 或几个购物车行的聚合,链接在一本书上。PurchaseOrder 链接在一个用户和一个购物车上。状态待定并发货。”
结果 :

幸运的是,ChatGPT 根据面向对象的设计最佳实践对它们进行了正确建模。


测试 #13
像代表 BPMN 流程的 XMI 这样更冗长的代码呢?
问题 :
“为披萨订单编写 BPMN 代码”
结果 :
用于表示简单教科书 BPMN 流程的 OMG XML 非常冗长,以至于 ChatGPT 无法完成生成它。考虑到他必须同时参与数百万次对话,他的回答字数有限是可以理解的。
我们两次要求他完成他的代码。
然后我们将 3 段代码连接到一个扩展名为 .bpmn 的文件中,然后我们使用Camunda 的bpmn.io ( https://bpmn.io/ )工具打开该文件

通过 3 次请求 ChatGPT 继续为 BPMN 图生成 XML 代码,我们能够构建 .bpmn 文件并使用 Camunda 的开源 bpmn.io 打开它。


制图师的首选助手
ChatGPT 可以通过建议视觉建模工具的代码来支持 IS 制图师的日常生产。通过帮助他们,ChatGPT 可以提高他们的能力和生产力,减少手动任务,并让他们专注于工作中最有趣的方面。
根据技术创新发展是 IT 工作的内在组成部分。管理应用程序开发人员不再使用汇编程序,软件架构师不再手动编写分布式架构的技术代码,低代码/无代码工具正在开发......从繁琐的命令式语言,我们将不可避免地转向形式主义声明 式自然语言。

结论
当然,这是 ChatGPT 的第一次处理,我们的测试与学校案例有关,例如可以用作信息系统建模领域未来学生的教材。

然而,他们表明,通过驯服 ChatGPT,通过用自然语言描述业务上下文,通过解释公式,通过添加关于所用本体的附加信息,通过提炼问题和询问某些部分的细节,这个聊天机器人能够生成代码表示企业架构视图以及 IS 的 UML 和 BPMN 图。

这一代“图表即代码”是基础,因为以文本形式表示模型的优点很多:模型之间的自动同步、使用 Git 类工具进行版本控制、使用 Google Doc 类工具进行协作设计、开放解决方案光源、更少比 OMG XMI 更冗长的代码...

更不用说通过脚本从他们的代码中转换模型来极大地促进 MDA 的实现。OMG 的 XMI 和 DI 标准非常复杂、冗长,并且有许多不兼容的版本,阻碍了模型推导的民主化,例如与架构层相对应的模型。