引言
在现代软件工程中,将模糊的业务需求转化为精确、可操作的系统模型是一项关键技能。文本分析作为自然语言问题陈述与正式UML(统一建模语言)图之间的强大桥梁。本案例研究展示了一个完整、分步的流程,用于从实际问题描述中提取候选类,通过系统化的排除标准进行优化,并将其演变为稳健的类图和顺序图。
以Saturn国际停车场安全系统作为我们的实际示例,我们展示了产品经理、业务分析师和软件架构师如何利用Visual Paradigm的文本分析功能,加速需求发现,减少歧义,并生成可维护的设计成果。无论您是在建模访问控制系统、企业工作流还是面向客户的应用程序,本文提出的方法论都提供了一个可重复的框架,将文字转化为可工作的模型。

问题描述
以下问题描述将在本教程中使用。让我们来看一下。
|
Saturn国际管理层希望加强其建筑及现场的安全措施。他们希望阻止非公司人员使用停车场。 Saturn国际已决定向所有员工发放身份卡。每张卡片记录员工的姓名、部门和编号,并赋予其进入公司停车场的权限。员工在场内时需佩戴此卡。 停车场入口处设有栏杆和读卡器。当驾驶员驾车进入停车场时,需将身份卡插入读卡器。读卡器随后验证卡片编号,以确认其是否在系统中登记。若编号被识别,读卡器会发送信号,触发栏杆升起。驾驶员便可驾车进入停车场。 停车场出口处另有另一道栏杆,当车辆欲驶离停车场时,该栏杆会自动升起。 当停车场无空位时,入口处的指示牌会显示“满”。只有当车辆驶离后,该指示牌才会关闭。 还有一种用于访客的卡片,同样允许进入停车场。该卡片记录编号和当前日期。此类卡片可提前发放,或从接待处领取。所有访客卡片必须在访客离开Saturn国际时归还至接待处。 |
|---|
从文本中识别类
创建文本分析
-
创建一个新项目。选择 项目 > 新建 从主菜单中选择。在 新建项目 窗口中,将项目命名为 教程 并点击 创建空白项目 以确认。
-
创建一个新的文本分析。选择 图表 > 新建 从主菜单中选择。
-
在 新建图表 窗口中,选择 文本分析并点击下一步。输入安全改进作为图表名称,然后点击确定.

-
这将打开文本分析编辑器。复制上方提供的问题描述并将其粘贴到编辑器中。可以通过按下Ctrl-V或在编辑器上右键单击并选择粘贴.

从文本中识别候选对象
通读问题描述以识别候选类。找到候选对象后,在文本段落上右键单击并选择将文本添加为类从弹出菜单中。

以下是获得的候选类列表:
| 土星公司 | 安全措施 | 建筑 | 场地 |
|---|---|---|---|
| 不属于公司的人员 | 停车场 | 身份卡 | 员工 |
| 姓名 | 部门 | 编号 | 公司员工 |
| 访问 | 障碍 | 读卡器 | 驾驶员 |
| 卡号 | 系统 | 信号 | 出口 |
| 客人使用的另一种卡 | 接待 | 客人卡 | 访客 |
到目前为止,文本分析编辑器应如下所示:

拒绝候选对象
在本节中,将根据拒绝规则列表审查这些候选类。本节结束时,将获得一个类模型列表。
现在,请根据以下拒绝规则审查候选类列表:
-
重复:如果两个或多个对象只是同一事物的不同名称。
-
无关:存在于问题领域中,但并非有意包含的对象。
-
模糊:仔细考虑词语时,有时会发现它们没有明确的含义,无法成为系统中有用的基础。
-
过于宽泛:含义过于宽泛。
-
属性:作为对象的属性。
-
关联:实际上表示对象之间的关系。
-
角色:有时指在系统特定部分中扮演特定角色的对象。
下表列出了审查结果:
| 候选类 | 接受/拒绝 | 拒绝原因 |
|---|---|---|
| 土星国际管理 | 拒绝 | 与系统无关 |
| 安全措施 | 拒绝 | 模糊 |
| 建筑 | 拒绝 | 与系统无关 |
| 地点 | 拒绝 | 与系统无关 |
| 公司以外的人员 | 拒绝 | 与系统无关 |
| 停车场 | 接受 | |
| 身份证明 | 接受 | |
| 员工 | 拒绝 | 与‘公司员工’重复 |
| 姓名 | 拒绝 | 属性 |
| 部门 | 拒绝 | 属性 |
| 编号 | 拒绝 | 属性 |
| 公司员工 | 拒绝 | 角色 |
| 访问 | 接受 | |
| 障碍 | 接受 | |
| 读卡器 | 接受 | |
| 驱动程序 | 拒绝 | 角色 |
| 卡号 | 拒绝 | 属性 |
| 系统 | 拒绝 | 过于宽泛 |
| 信号 | 接受 | |
| 退出 | 拒绝 | 与系统无关 |
| 客人使用的另一种卡 | 拒绝 | 与客人卡重复 |
| 接待 | 拒绝 | 与系统无关 |
| 客人卡 | 接受 | |
| 访客 | 拒绝 | 角色 |
为了区分被接受和被拒绝的候选类别,让我们将被接受的类别的高亮颜色改为绿色。为此,请点击带有黄色高亮的单元格,并从颜色选择器中选择绿色。

因此,现在得到的候选类别列表如下:
| 停车场 | 身份卡 | 访问 | 障碍 |
|---|---|---|---|
| 读卡器 | 信号 | 访客卡 |
重新表述已识别的类别
让我们重新表述被接受的候选类别,要求:(1) 统一单数和复数形式的名词表达;(2) 准确反映提取文本的含义。
请阅读下方表格,了解所需更改及更改原因。
| 提取的文本 | 重述为 | 原因 |
|---|---|---|
| 停车场 | ||
| 身份卡 | 员工卡 | “身份卡”字面意思是各种卡片,但根据文章内容,“身份卡”一词来自短语“发放给所有员工的身份卡”,因此实际上指的是员工卡。我们应将其重述以避免混淆。 |
| 访问 | ||
| 障碍 | ||
| 读卡器 | ||
| 信号 | ||
| 出口 | ||
| 访客卡 | 访客卡 | 改为使用单数名词,使其与其他词语保持一致 |
相应地更新候选类别的名称:

从文本创建类模型元素
您已经确定了一组类。要将它们用于模型构建,您需要将它们从文字转换为模型元素。
-
选择表格中的七个类。要进行多选,请按住 Ctrl 键,然后逐行点击。
-
右键单击您的选择,然后选择 创建模型元素 从弹出菜单中。

-
您将被提示在图表中可视化创建的元素。请保持选择 创建新图表 已选。将类图重命名为 停车场系统 并点击 创建.

这将创建一个类图。

开发类模型——识别结构关系
您已经获得了一组在类图中可视化显示的类。现在,通过使用关联、泛化和依赖等关系连接器将它们连接起来,来识别它们的结构关系。下图展示了结果。在此过程中,可能会添加新的类,例如本例中将“card”类作为“员工卡”和“访客卡”子类的父类添加。

开发交互模型——识别属性和操作
创建顺序图以可视化对象之间的交互,即上述识别出的那些类的实例。在此过程中,将识别出属性和操作,从而使类模型完整。让我们创建一个顺序图,以可视化公司员工驾车进入停车场的情况。
-
创建一个顺序图。选择 图表 > 新建 从主菜单中。
-
在 新建图表 窗口中,选择 顺序图 并点击 下一步。选择 空白作为模板并点击下一步。输入停车场(使用员工卡)作为图表名称并点击确定.

-
该场景从一名司机将员工卡插入读卡器开始。让我们创建一个参与者员工。要创建一个参与者,请选择参与者工具,从图表工具栏中拖动到图表上。

-
我们需要将读卡器显示为一个对象。与其创建生命线,不如从读卡器类创建一个对象实例。实现这一点有几种方法。其中一种方法是通过模型浏览器。点击模型浏览器标签,位于应用程序窗口的左侧(或选择视图 > 面板 > 模型浏览器如果标签不存在)。然后,将类“读卡器”拖动到图表上。

-
选择生命线以创建类型时的提示。
-
生命线会自动命名为“读卡器”,遵循分类器的名称。由于名称是可选的,我们将其删除。这也能使图表更易读。

-
连接员工与: 读卡器。将鼠标指针移至参与者员工。按下 资源目录按钮并将其拖动到生命线 : 卡片读取器.

-
释放鼠标指针并选择 消息 从 资源目录.

-
输入 插入员工卡 作为消息的名称。

-
作为输入设备,卡片读取器接收卡片后,会请求系统进行验证。让我们为系统创建一条生命线。由于我们没有此类,可以直接创建生命线。拖动 生命线 从图表工具栏拖到图表上。将生命线命名为 停车场系统.

-
创建一条消息 验证卡片() 从 : 卡片读取器 到 停车场系统.

-
有两种可能的结果:成功或失败。我们将对这两种情况建模。在UML顺序图中,可以使用替代组合片段来建模多种可能的流程。创建一个覆盖参与者和生命线的替代组合片段。随着越来越多的生命线被添加,我们将调整其大小以覆盖更多生命线。

-
如果成功,系统将加载员工卡的记录。创建一条自消息 加载员工()。为此,请将鼠标指针移至 汽车停车系统然后点击资源目录,然后选择自消息 -> 生命线从资源目录。输入自消息的名称。

-
按照步骤4将类可视化员工卡作为生命线。再次,删除其名称。

-
假设最后一次访问时间将被设置为员工卡的记录。通过一个设置消息来表示这一点设置最后一次访问().

-
将创建一条访问记录。让我们将访问类在图中作为生命线可视化,然后通过一个创建消息连接到它。别忘了扩大替代组合片段以覆盖生命线。

-
还将创建一个信号以触发栏杆升起。让我们将信号类在图中可视化,然后通过一个创建消息连接到它。到目前为止,你的顺序图应与下面的图相似。

-
升起栏杆。将栏杆类作为生命线可视化,并通过一个升起()消息连接。这里我们将生命线命名为入口因为入口和出口都有栏杆,而在此图中我们指的是入口处的栏杆。

-
最后,请求读卡器显示一条消息,以表明员工卡验证成功。创建一个顺序消息“显示成功消息”,连接在汽车停车系统和: 卡片读取器.

-
当卡片无法验证时会发生什么?让我们在alt.组合片段的下部对其进行建模。假设系统将请求卡片读取器显示验证失败消息。在图中创建这样的消息。

-
无论成功或失败,验证过程结束后员工卡都将被弹出。让我们创建序列消息弹出卡片连接停车系统和: 卡片读取器.

-
最后,创建一个从: 卡片读取器返回到参与者员工。为此,创建该消息,然后右键单击它并从弹出菜单中选择类型(未指定)> 回复从弹出菜单中。

-
alt.组合片段的两个部分被称为操作数。将操作数的条件作为约束输入。右键单击组合片段左上角的标签alt,然后从弹出菜单中选择操作数 > 管理操作数从弹出菜单中。在弹出窗口中,将两个操作数的约束分别设置为卡片已接受和卡片被拒绝分别。

-
让我们从序列消息创建操作。首先,从停车系统生命线创建一个类。右键单击生命线,然后从弹出菜单中选择选择类 > 创建类“停车系统”从弹出菜单中。

-
参考以下图像。对于每个高亮的连接器,右键单击它并选择输入 > 调用 > 创建操作从弹出菜单中选择。

-
返回类图。操作会自动显示在类模型中。

通过为不同场景创建越来越多的顺序图,类模型将逐步得到丰富,包含系统所需的所有操作和属性。
结论
将自然语言需求转化为精确的UML模型既是一门艺术,也是一门科学。本案例研究证明,通过有纪律的方法——从文本分析开始,应用系统化的排除标准,重新表述以提高清晰度,并通过类图和顺序图迭代优化——团队能够将模糊的问题陈述转化为稳健且可实现的系统设计。
Saturn International停车场示例说明,即使看似简单的需求也包含多层复杂性:多种参与者类型、条件流程、硬件交互以及状态管理。通过利用Visual Paradigm的集成建模环境,实践者可以从初始文本追踪到最终代码,确保各图表之间的一致性,并在技术与非技术人员之间实现高效协作。
实践者的要点总结:
-
从广泛的候选提取开始,然后通过明确的排除规则进行精炼
-
使用单数且一致的命名规范以减少歧义
-
利用顺序图揭示隐藏的操作和属性
-
将建模视为一个迭代过程——每个场景都会丰富类模型
-
保持需求、模型与实现之间的双向可追溯性
无论您是在设计访问控制系统、企业工作流,还是面向客户的应用程序,本文提出的方法论都提供了一个可重复、可扩展的框架,将文字转化为可工作的软件模型。
参考文献
- Visual Paradigm UML工具功能:全面概述Visual Paradigm的UML建模功能,包括对所有14种UML 2.x图类型的支特以及AI辅助建模功能。
- 14种UML图类型的概述:详细指南,解释结构型和行为型UML图及其在软件设计中的适用场景。
- Visual Paradigm用户指南PDF:官方文档,涵盖Visual Paradigm的安装、界面导航及核心建模工作流程。
- UML建模文档:逐步说明,介绍如何在Visual Paradigm环境中创建、编辑和管理UML图。
- 什么是UML图?:面向初学者的UML概念、图类型及其在软件架构和设计沟通中作用的友好入门介绍。
- 使用用例捕获需求:使用用例图和文本分析来获取、记录和验证系统需求的实用指导。
- AI辅助的UML类图生成器:概述Visual Paradigm的AI驱动功能,可从自然语言描述中自动生成类图。
- PlantUML转Visual Diagrams教程: 视频教程,演示如何将PlantUML脚本代码转换为Visual Paradigm中的交互式、可编辑的UML图。
- 什么是UML?: 对统一建模语言(UML)原理、历史及其在现代软件工程实践中的重要性的基础性解释。
- 代码工程工具: 描述了双向工程功能,支持多种编程语言的代码生成和逆向工程。
- 使用ORM进行数据库映射: 指导如何使用对象-关系映射技术,从UML类图生成数据库模式和持久层。
- 数据库工程的优势: 解释集成数据库建模如何提高数据一致性、缩短开发时间,并支持敏捷迭代。
- Visual Paradigm图库: 展示使用Visual Paradigm创建的示例项目、图示模板和行业特定的建模实例。
- 安装Visual Paradigm: 官方安装指南,涵盖系统要求、许可证激活和初始配置步骤。
- Eclipse中的UML集成: 文档说明如何将Visual Paradigm建模工具直接嵌入Eclipse IDE中,以实现无缝的开发工作流。
- 免费UML工具选项: 对比Visual Paradigm社区版功能与专业版能力,帮助评估建模解决方案的团队做出选择。
- UML建模软件流程: 概述UML工具如何融入迭代开发流程,包括敏捷、瀑布和混合方法论。
- 可视化建模工具功能: 详细的功能列表,突出智能元素复用、语法验证和资源目录功能,这些是专业建模工具的显著特征。
- 面向企业解决方案的UML工具: 面向企业用户的描述,突出Visual Paradigm的可扩展性、协作功能,以及与需求管理与敏捷规划工具的集成能力。
- Visual Paradigm主页: Visual Paradigm的主网站,提供产品下载、教程、社区论坛和支持资源,供建模实践者使用。
- UML教程合集: 精选的分步教程库,涵盖从入门到高级的多种图示类型的UML建模技术。
- 繁体中文UML工具指南: 针对繁体中文使用者和团队的本地化资源,提供UML建模指导和产品信息。












