Press "Enter" to skip to content

根据您的需求进行交流:我应用生成式人工智能(LLM)到软件需求的旅程

在数字时代,大企业面临着对其旧系统和流程的理解不足的困扰。知识被孤立在不同的团队和专家之间的信息孤岛中。这种碎片化显著促进了技术债务的增长,这是一种逐渐阻碍组织敏捷性和生产力的潜在杀手。在Curiosity Software,我们过去的五年里致力于创建结构化需求(通过视觉模型)并与数百个DevOps工具进行连接。我们相信这使我们在实施生成式AI时处于极其有利的地位。这些模型和DevOps工件可以作为访问流经组织软件开发环境的数据的中央枢纽。

作为我们应对技术债务和缺失知识的普遍挑战使命的一部分,我们开始了将大型语言模型(LLM)应用于软件需求和业务逻辑的旅程。我们的目标是创建一个组织软件需求的知识中心,可以查询以揭示知识并偿还技术债务。

理解大型语言模型(LLMs)的领域

在讨论我们的经验和见解之前,让我们通过提供对大型语言模型的简要概述来铺垫一下。像OpenAI的GPT-4一样,LLMs能够理解和生成人类语言。它们从包括各种主题和语言风格的广泛数据语料中学习。

这些LLMs使用一种称为Transformer的深度学习模型进行工作,它使用自注意力机制(神经网络)的层来分析和理解数据中的上下文。在训练过程中,它们阅读了无数个句子和段落,并对接下来的句子内容进行预测。这些预测是基于它们已经阅读的内容:

LLM的惊人之处在于它能够生成类似人类的文本。这是因为它在大量数据语料和模型中具有大量参数或权重(GPT-4有数百亿)的训练:

这种类似人类的回应能力不仅源于算法中固有的智能,还源于人类语言可能没有我们最初认为的那么复杂的发现。

通过让神经网络接触足够多的人类语言实例,LLM能够辨别出模式并适当地回应查询。随着LLM所训练的数据的规模和质量的增加,LLM的能力也会呈指数级增长。

结构化数据对LLM的成功至关重要

对于当今的软件组织来说,利用LLM的能力似乎从未如此近在咫尺。有一些非常紧凑、专门的模型可以在本地PC上运行,并且与GPT-3.5的性能水平相媲美。

然而,LLM最重要的组成部分并不是可用的工具,而是LLM所训练的数据。因此,这也是成功使用LLM的主要障碍,因为当今的组织缺乏在软件领域的结构化数据。

软件需求通常以非结构化文本格式存储,而且更糟糕的是,它们经常是不完整、模糊和缺失信息的。测试用例也是如此,它们通常以基于文本的测试步骤列表的形式存储。

克服这个结构化数据问题需要创新和谨慎考虑。可以使用信息提取、自然语言理解和机器学习等技术将非结构化数据转换为结构化数据。这个过程通常需要人工干预。

训练LLM的另一种替代方案不是尝试在非结构化文本数据上进行训练。它旨在从一开始就创建结构化需求,或者将非结构化数据转换为结构化需求作为中间步骤。

这就是建模需求可以赋予创建适用于训练语言模型的AI-ready需求的力量的地方。我们可以使用模型来对现有数据进行结构化和改进,将现有的SDLC工件与模型集成到一个中央知识中心中。

什么是软件需求建模?

基于模型的测试使用所考虑特性的模型来生成测试用例。这些模型通常以视觉流程图的形式表示,清楚地定义了软件需求,描述了系统的行为、功能或操作。

通过使用这些模型,可以减少模糊性,使开发人员和测试人员更容易理解需求。此外,建模有助于自动生成测试用例、数据和自动化。对软件需求的任何更改都可以通过修改模型来反映出来,从而实现动态和更新的测试资源。

流程图以简单易懂的方式呈现复杂过程的可视化方法。它们将每个步骤表示为方框或符号,并在它们之间使用箭头显示用户和数据在过程中的流动。这清晰地展示了过程的每个步骤,突出显示了操作的顺序和决策点:

通常,利用基于模型的测试的组织将创建一个可重用模型的库,然后可以连接这些模型以在更快的速度下构建更丰富的端到端场景。组件化的过程使团队在创建测试资源方面能够更快速,同时也能以简化的方式应对变化:

流程图适用于LLMs

流程图本质上是有结构的。对于训练大型语言模型来说,以流程图形式呈现的结构化数据能够产生非常强大的结果。

此外,流程图非常适合查询,因为它们直观且易于解释。控制流和决策过程清晰可见,使模型能够轻松预测下一步的步骤。

能够推断各个步骤之间的关系使流程图在查询和训练LLMs方面尤为有价值。下面是使用LLM查询简单模型的示例。下面的模型描述了学生开设支票账户的申请流程:

提示:学生需要多大年龄才能获得学生支票账户的批准?

回答:18岁或以上。

提示:学生如何才能获得学生支票账户的批准?

回答:要获得学生支票账户的批准,学生首先需要输入个人详细信息。然后需要验证他们的年龄以确保他们年满18岁。一旦年龄确认为18岁或以上,学生必须输入入学证明以证明他们的学生身份。如果满足所有这些条件,并且申请成功,学生将获得学生支票账户的批准。

与软件需求交流

考虑到LLMs查询和推理流程图(模型)的已证实能力以及好奇心与DevOps工具之间的各种连接器,我们试图将LLMs应用于流程图和DevOps工件。我们试图将模型与来自不同的DevOps工件的数据结合起来,从而创建一个LLMs的中央知识中心。

我们已经将LLMs应用和训练到从JIRA中捕获的各种软件需求和存储在组织的Test Modeller工作区中的模型中。对于这个项目,我们有一个JIRA项目,其中包含了一系列用于银行应用的任务,以及为基于文本的问题创建的模型。这些模型添加了额外的结构,并完善了需求,为LLMs提供所需的数据:

这是一个示例工单:

如果您将上述“墙壁文字”用户故事与下面的可视化需求进行对比,您将看到流程图使得理解申请信用卡的逻辑变得更容易。这是因为流程图的内在结构和可视化特性。

在Test Modeller工作区中同步的流程图和Jira工单的集合为LLMs提供了一个知识中心。当进行查询时,LLMs可以利用并推理存储在不同SDLC工件中的信息,例如存储在多个Jira工单中的数据。

让我们通过使用在示例银行软件需求和模型上进行训练的LLM来查询这个知识中心的一些示例。

示例1:简单问题

首先,让我们从一个简单的问题开始,预期它能够表现出色。给我一个JIRA工单的详细信息。

提示:JIRA工单CB-13是什么?

我们将看到它是否返回工单的摘要:

示例2:使用模型的隐含推理

在这个例子中,我们将更深入地提出一个问题,期望LLM能够理解流程图并从中推断出一个答案。具体问题是关于信用卡申请流程。

提示: 完成信用卡申请需要什么信用评分?

LLM已经捕获了信用卡申请流程的流程图并解释了模型。然后,它使用这个解释来计算所需的信用评分为700或以上。

示例3:使用模型和需求的隐含推理

此提示需要LLM中断多个信息来源以回答问题。它查找一个模型和相应的要求。

提示:客户何时可以申请信用卡?

示例4:多要求推理

此提示需要理解和推理多个要求以回答交叉要求查询。我们将在回答中看到,引用了三个用户故事,以回答只有当个人有良好的信用分数时才能获得产品。

提示:如果我信用良好,我可以申请哪些产品?

演示:使用LLMs查询结构化流程图数据

观看我将Jira用户故事中的信息同步到中央知识中心并运行编写本文时使用的查询:

采用LLMs提高软件交付效果

Curiosity Software正在利用像OpenAI的GPT-4这样的大型语言模型(LLMs)来更好地理解和管理软件需求和业务逻辑,特别关注解决技术债务问题。

鉴于LLMs擅长处理结构化数据,基于模型的测试是完善和消除非结构化数据中歧义的理想工具。这些模型提供了结构化业务流程的来源,使用可视化流程图表示软件需求,进而提供了清晰度。同时,我们可以将来自DevOps工具和工件的信息同步到中央知识中心。

这种方法还可以自动生成测试用例、数据和自动化。利用这些方法,Curiosity Software正在积极训练LLMs,涵盖从各种DevOps工具中捕获的广泛软件需求,这些需求在组织的Test Modeller工作空间中建模。这样一来,在查询时可以提供整个SDLC的解释,并为风险、发布、测试覆盖率、合规性等决策提供信息。

我们甚至可以使用生成式人工智能生成模型,正如我在上一篇文章中所描述的。这样就闭环了反馈。人类可以与生成式人工智能合作,根据流程图和更广泛的SDLC工件中的数据创建和迭代改进模型。这些流程反过来为开发人员提供准确的规范,同时生成用于验证其创建的代码的测试。

通过AI辅助的软件设计、测试和开发产生的结果数据被馈入我们的中央知识中心。这更新了LLM,为未来的迭代提供信息,并避免技术债务。

将AI应用于软件需求可以提高软件开发流程的效率和效果,充当组织业务流程的知识中心,并最终解决技术债务问题。

Leave a Reply

Your email address will not be published. Required fields are marked *