【发布时间】:2014-12-30 21:39:46
【问题描述】:
是否有一种形式语言可用于将 UML 序列图中的信息捕获为人类易于理解的文本格式?
在我们这里,软件需求通常是根据复杂的序列图来指定的,这些序列图难以审查、验证正确性和进行更改。同样恕我直言,程序员更愿意从需求的明确文本表示中实现,而不是从庞大的多页图表中实现。
【问题讨论】:
标签: uml requirements
是否有一种形式语言可用于将 UML 序列图中的信息捕获为人类易于理解的文本格式?
在我们这里,软件需求通常是根据复杂的序列图来指定的,这些序列图难以审查、验证正确性和进行更改。同样恕我直言,程序员更愿意从需求的明确文本表示中实现,而不是从庞大的多页图表中实现。
【问题讨论】:
标签: uml requirements
(1) 是的,有一种专有的几乎正式的文本格式语言能够以程序员可以理解的 UML 序列图表达信息(也可能是其他一些人)人类)。
我的意思是由Steve Hanov 设计和实现的语言,完整的示例列表可在https://www.websequencediagrams.com/examples.html 获得,我强调了以下示例之一,以便您了解可读性:
(2) 但是,请注意,您(或其他人)可以用任何语言(文本或图形)编写糟糕的、不可读的代码,并且更改语言不会自动改变您(或其他人) else's) 习惯是让代码自动变得更好、更易读、更易于维护
(2.1) 写下“需求的明确文本表示”,例如以客户批准的用例的形式,这不是一件容易做也不容易学习的事情,只是语言的改变不会有太大的改善。 (请参阅 Stack Overflow: From user stories to sequence diagram 以获取更多指针)
(2.2) UML 序列图的目标受众(读者)不仅是程序员,而且是技术含量较低的利益相关者,对于他们来说,一张图片可能价值数千字。在我看来,如果需要的话,给程序员 Java 伪代码甚至可以通过工具逆向工程为 UML 序列图(参见Stack Overflow: how to generate sequence diagram from Java source code 或谷歌:“java 序列图”以获得更多指针)比试图找到/发明一种序列图特定语言
(2.3) 确实有一些工具可以通过使用缩放、超链接、折叠/展开块、调整显示的详细程度等技巧来帮助阅读大型 UML 设计,还有像 @987654325 这样的纸张大小@可以把典型的多页图变成单页图
根据您的描述,您的位置似乎有流程问题,您最好在https://softwareengineering.stackexchange.com/help/on-topic提出问题
我可以在这里询问哪些主题?
Programmers Stack Exchange 是一个问答网站,面向软件开发和相关领域的专业人士和学生,他们有兴趣就软件开发的概念性问题获得专家解答。
如果您对...有任何疑问
- 软件要求
- 软件架构和设计
- ...
- 开发方法和流程
- 软件工程管理
- ...
【讨论】:
xmojmr 的方法是记录用例场景的有效方法,如果您的序列图令人困惑,可能是因为它们没有充分记录。正如 xmojmr 所说,一张图片胜过一千字,但有时几百字真的有助于解释图片!我想分享一些对您有帮助的背景知识。
我认为描述需求的过程具有三个层次,其中用例场景是第三个层次。顶层是用例图,它显示了系统中的不同用例和使用系统的利益相关者如何交互。下一级是每个用例的详细信息。我为此使用了“用例叙述”。第三层是通过用例的每个单独路径(“用例场景”)。
二级和三级之间存在很多混淆。这部分是因为在某种程度上它们是一起运行的,例如,通过一个用例而不是两个场景来分析相关的成功和失败路径是合理的。至少,我更愿意将它们视为一种场景。
我更喜欢使用活动图来记录用例叙述。虽然您几乎可以使用序列图(至少 2.0 版本)做任何事情,但 IMO 发散行为、决策树和并行行为在活动图中比在序列图中更明显。因此,每个用例一个活动图,然后用例中每个单独场景的一个序列图。
在您的流程中,序列图似乎没有附有正式的用例场景文档。如果你用谷歌搜索“用例场景”,你会发现很多这样的例子。但是,请记住,许多示例实际上是在记录我所说的“叙述”。
我正在使用 Tom Pender 的UML 圣经(Wiley Publishing,2003 年)中的术语。另一本很棒的书是 Alistair Cockburn 的Writing Effective Use Cases:here 是一个很好的示例。
【讨论】:
另一个使用类似语法的在线文本到图表工具。 http://echoma.github.io/text_sequence_diagram/
【讨论】: