架构赋能 AI:知识工程推动下的软件架构数字化
TL;DR:我们试验了将 AI 应用到基于 Protobuf 的微服务架构中,基于 ArchGuard 治理平台、Shire AI 助手、Team AI 三个工具中,构建了一套完整的 AI4SE 原型,在需求、设计、开发、测试和运维等阶段,这里是我们的思考和实践。
过去几个月里,我们在各大技术大会上频繁看到生成式 AI 的应用,很多研发组织都在尝试将其引入开发的各个环节。然而,随着 AI 技术的深入应用,不少组织也发现了基础知识工程方面的种种挑战。例如,知识的缺乏规范化、流程的缺失以及标准化检测工具的不足,正成为 AI 成功落地和提升研发效能的主要阻碍。
如果说知识工程是 AI 赋能研发的基础,那么数字化架构则是 AI 赋能研发的关键。在这篇文章中,我们将探讨知识工程推动下的架构数字化:如何通过知识工程的视角, 利用 AI 技术,对系统架构进行全面分析、管理和优化的过程,以及我们的思考和实践。
引子:架构知识如何改变 AI 驱动的开发流程??
AI4SE(Artificial Intelligence for Software Engineering)是指人工智能技术应用于软件工程领域,旨在通过利用 AI 算法和工具来改进软件开发、维护、测试和管理等各个环节的效率和效果。—— https://aise.phodal.com/
从过去的、标准或者不标准的 DevOps 开发流程来看,我们会把 SDLC 流程分为 N 个阶段,取决于你的组织架构,阶段的数量可能会有所不同,以适配康威定律。在此,我们将 SDLC 流程简化为以下几个主要阶段:需求、设计、开发、测试和运维。
SDLC 中的 AI 与架构
而毫无意外的是,当你深入 AI 4SE 的应用时,会发现每个环节都需要架构知识,以微服务架构为例:
需求阶段。AI 需要结合现有架构、微服务架构的特点,设计出符合微服务架构的需求文档,拆分好需求及其所属的需求或者功能单元。
设计阶段。遵循现有的微服务架构设计规范、API 规范、数据库设计规范等,由 AI 生成符合规范的文档、契约设计和数据库设计。
开发阶段。AI 生成的代码,需要满足编码规范、代码风格、代码质量等等,还有组织内部的质量门禁规则(比如 SonarQube)。
测试阶段。自动化测试需要合理的测试策略、规范等,测试人员提的 bug 总需要在合适的服务或组件中修复。
运维阶段。需要完整的服务地图,以及服务的依赖关系、日志规范等等,才能结合 AI 自动帮你定位到问题、生成报告等。
当然,架构规范通常分散在不同的部门和团队中管理,如何高效整合和应用这些知识是当前面临的一个挑战。然而,这里我们主要关注架构知识在开发过程中的重要性。
微服务场景示例:AI 如何依赖于架构
以基于 Protobuf 的微服务架构为例,我们可以探讨 AI 如何利用架构知识来推进开发流程的数字化。
Protobuf 是一种高效的二进制序列化协议,提供了跨语言、低延迟的数据交换能力,特别适合微服务架构中服务之间频繁的通信需求。通过解析 Protobuf 中的服务(Service)、消息(Message)和 RPC 调用等内容,AI 能够提取系统组件之间的交互关系、数据结构以及模块的职责。这些信息有助于识别系统的核心模块、数据流以及 API 接口。
需求阶段:AI 能够结合 Protobuf,将复杂的业务需求拆解为更小的功能单元,并标注它们之间的依赖关系。同时,AI 会自动生成针对每个服务的消费者和服务者需求文档。
设计阶段:在设计过程中,AI 可以自动生成符合微服务标准的设计文档,涵盖 Protobuf API 代码、数据库设计等内容,进一步生成自动化测试接口,确保系统的一致性。
开发阶段:AI 在开发阶段会自动应用团队的编码规范和代码风格,结合 Protobuf 接口生成客户端和服务端代码,以确保代码质量符合组织的标准。
测试阶段:AI 可以根据需求和设计文档自动生成合理的测试策略和测试用例,创建模拟请求和响应,帮助识别 bug 所在的服务,并自动生成修复建议。
运维阶段:在运维阶段,AI 能够利用 Protobuf 文件生成服务地图,展示服务间的依赖关系。同时,AI 还会自动分析日志数据生成问题报告,并提供根因分析,帮助运维团队快速解决问题。
对于 Spring Boot 框架,尽管具体实现和技术栈有所不同,但整体思路与上述 Protobuf 类似。Spring Boot 提供了一系列工具和库来支持微服务架构,例如 Swagger 等,这些工具可以帮助开发者快速构建和管理微服务。通过结合 Spring 工具生态,Spring Boot 应用中的服务之间的通信也能实现高效的数据交换,AI 可以同样在需求、设计、开发、测试和运维各个阶段进行有效的集成和自动化,进一步提升开发流程的智能化水平。
AI 与架构知识相互赋能:如何实现架构的数智化?
架构数智化是指通过对架构知识进行数字化和智能化的处理,提升架构设计、管理与协作的效率和质量。其核心在于将分散的架构知识进行数字化表示,构建统一的知识基础,使得人工智能(AI)能够理解和利用这些知识,从而辅助并优化架构相关的各个环节。
实现架构数智化的关键步骤包括:
架构元模型的建立:定义架构的基本元素和关系,如组件、接口、依赖关系等。这为架构知识的数字化奠定了基础,确保了架构元素的标准化和可操作性。
知识图谱的构建:将架构元素及其关系映射到知识图谱中,形成结构化的架构知识库。知识图谱使得复杂的架构信息以可视化、关联性的方式呈现,便于知识的检索和推理。
标准化的语义定义:采用统一的描述语言和规范,如统一建模语言(UML)、领域特定语言(DSL)等。标准化确保了架构知识的可读性和可解析性,促进了人与机器之间的有效沟通。
借助数字化的架构知识,AI 能够在以下方面助力架构:
设计方案推荐:根据具体的需求和约束条件,AI 可以快速推荐最佳的架构设计方案,帮助架构师做出更明智的决策。
规范合规性检查:自动验证设计方案是否符合组织的架构规范和标准,减少人为错误,确保一致性和合规性。
自动生成原型:基于高层次的架构设计,AI 能够自动生成代码骨架或原型,支持快速迭代和验证,加速开发流程。
智能问答系统:利用自然语言处理技术,AI 可以回答团队成员关于架构的疑问,提供实时支持,促进知识共享。
智能化协同设计:在协同设计平台上,AI 提供实时建议和错误检查,帮助团队成员协调工作,提高设计效率和质量。
综上所述,架构数智化通过集成数字化表示和人工智能技术,实现了架构知识的高效管理和利用,推动了架构设计过程的智能化转型。这不仅提升了组织的创新能力和响应速度, 也为数字化时代的持续发展提供了坚实的技术支撑。
实践:提炼架构知识,整合 AI 工具
我们的探索围绕于三个平台/工具:
ArchGuard 治理平台:用于架构知识的管理、分析和优化,支持架构元模型的定义、知识图谱的构建和标准化的语义定义。
Team AI 平台:在 AI 平台上整合开发流程与架构知识,提供智能化的协同设计、规范合规性检查、自动生成原型等功能。
Shire AI 助手:在 IDE 端提供直接 Prompt 能力,并与远程智能体的交互,以实现基于代码骨架的 AI 交互和迭代。
其中的 ArchGuard( https://archguard.org/ )和 Shire ( https://archguard.org/ ) 都是我们自研的开源工具,可以在 GitHub 上找到源码和文档。
1. ArchGuard:提取架构知识与数据
我们在 ArchGuard 2.2.2 版本中,提供了对 Protobuf 文件的解析和分析功能,支持自动提取服务、消息、接口等元素,构建服务地图和依赖关系图。并构建了 全新 ArchGuard Architecture Analyser 模块,支持对架构知识的智能化分析和优化。
通过,直接运行 ArchGuard CLI,就可以将 Protobuf 文件解析为 JSON 格式,并上传到自定义的远程服务器中,以便后续的分析和优化。
java -jar .scanner_cli.jar --language=go --type=architecture --output=http --server-url=http://localhost:3000 --path=.
如下是,我们在 ArchGuard 中的可视化展示:
2. Team AI 平台:整合 AI 工具与架构知识
我们在 Team AI 平台中,整合了开发流程,并兼容 ArchGuard 接口。如下是,相同数据在 Team AI 平台中的展示:
结合生成式 AI 的生成能力,我们可以快速构建基于代码库的接口知识,用于快速进行知识检索和查询:
以便于我们可以从需求阶段,就可以查询到需求可能影响 的范围,方便进行架构设计和文档的编写等。Team AI 平台也提供了面向其它工具、平台的接口,诸如于 Shire IDE 插件就可以快速接入。
3. Shire AI 助手:AI 与架构知识的交互
在 Shire 可以直接调用远程的 Http API、流式 API 等:
因此可以直接从平台获取所需要的架构知识,并将其与代码库相结合,以实现更高效的软件开发。我们还在即将发布的 Shire 新版本中添加更好的 Protobuf 支持:
以直接在 IDE 中就可以让 AI 修改 prompt。
结语:架构知识的数字化与智能化
在我们的探索中,架构知识的数字化与智能化成为提升软件开发效率的关键。通过将 AI 应用到基于 Protobuf 的微服务架构,我们在需求、设计、开发、测试和运维等环节实现了智能化支持。
借助 ArchGuard 治理平台、Team AI 平台和 Shire AI 助手,我们构建了一套工具链,使架构知识能够被 AI 理解和应用,推动开发流程的自动化与智能化。尽管面临着规范与流程的挑战,我们相信,架构知识的有效整合将为 AI 的成功落地和研发效能提升提供强有力的支持。未来,我们将继续深入探索架构与 AI 的融合,推动软件工程的持续变革。