UML序列图的形式语言

5

是否有一种正式的语言可以将UML序列图中的信息捕捉到文本格式中,以便人类易于理解?

在我们这里,经常会用复杂的序列图来指定软件需求,这些图很难进行审核、验证正确性和进行更改。同时,在我看来,程序员们更喜欢从明确的文本表示需求开始实现,而不是从庞大的多页图表中开始。

3个回答

5

(1) 是的,有一种专有的几乎正式的文本格式语言,能够用UML序列图表达信息,程序员可以理解(也可能是其他人类)。

我所指的语言是由Steve Hanov设计和实现的,可在https://www.websequencediagrams.com/examples.html上找到全面的示例列表,下面我强调了其中一个示例,以便您了解可读性的想法:

enter image description here

(2) 但是,请注意,您(或其他人)可以使用任何语言(文本或图形)编写糟糕的、难以阅读的代码,并且更改语言不会自动改变您(或其他人)的习惯,也不会使代码自动变得更好、更易读、更易维护。

(2.1) 将"需求的明确文本表示"写下来,例如以客户批准的用例的形式,这不是一件容易做到或学习的事情,仅仅更改语言并不能很大程度上改善它(有关更多指针,请参见Stack Overflow:从用户故事到序列图)。

(2.2) UML序列图的预期受众(读者)不仅是程序员,还包括那些可能通过图片胜过千言万语的非技术利益相关者。在我看来,给程序员提供可以通过工具反向生成UML序列图的Java伪代码(参见Stack Overflow:如何从Java源代码生成序列图或Google:“java sequence diagram”获取更多指针)比尝试找到/发明一个序列图特定语言更好。
(2.3) 当然有一些工具可以通过使用缩放、超链接、折叠/展开块、调整显示的详细程度等技巧来帮助阅读大型UML设计,还有像A3或A2这样的纸张大小可以将典型的多页图转换为单页图。
根据您的描述,似乎您遇到了流程问题,最好在https://softwareengineering.stackexchange.com/help/on-topic提问。

我可以在这里询问哪些主题?

程序员堆栈交换是一个问答网站,为软件开发和相关领域的专业人士和学生提供服务,他们希望获得有关软件开发概念问题的专业答案。

如果您有以下问题...

  • 软件需求
  • 软件架构和设计
  • ...
  • 开发方法和流程
  • 软件工程管理
  • ...

一个有趣且深思熟虑的回答,针对一个有趣的问题。 - BobRodes

2
xmojmr的方法是记录用例场景的有效方式,如果您的序列图令人困惑,那可能是因为它们没有充分记录。正如xmojmr所说,一张图片胜过千言万语,但有时几百个词汇确实有助于解释图片!我想分享一些您可能会发现有用的背景知识。
我认为描述需求的过程有三个层次,其中用例场景是第三个层次。顶层是用例图,显示系统中不同用例和使用系统的利益相关者之间的交互。下一个层次是每个用例的细节。我使用“用例叙述”来描述这个层次。第三个层次是通过用例的每个单独路径(“用例场景”)。
在第二层和第三层之间存在很多混淆。这部分是因为它们在某种程度上混合在一起,例如分析通过用例的相关成功和失败路径作为一个场景而不是两个场景是合理的。至少,我更喜欢将它们视为一个场景。
我更喜欢使用活动图来记录用例故事。虽然你可以用序列图做任何事情(至少是2.0版本),但在我的看法中,活动图比序列图更容易展现不同的行为、决策树和并行行为。因此,每个用例一个活动图,然后每个用例场景一个序列图。
在你的流程中,似乎没有正式的用例场景文档与序列图相配套。如果你在谷歌上搜索“用例场景”,你会找到一些这样的例子。然而,请记住,许多例子实际上是记录我所说的“叙述”。
我使用Tom Pender的《UML圣经》(Wiley出版社,2003年)中的术语。另一本很棒的书是Alistair Cockburn的《编写有效的用例》:这里有一个很好的样例。

1
也许在我们的工作中,我们并没有真正使用序列图来实现其预期目的。相反,我们主要使用它来记录协议/接口。但是在我看来,UML图中似乎没有一种适合这种用途。 - Ajoy
@Ajoy 如果是这样的话,可以看一下UML协议状态机图。我同意Bob的观点,UML活动图非常有用,而且"没有一个最好的UML图表来展示所有内容" - xmojmr

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接