如何在UML中记录简单方法?

时间:2010-05-11 16:43:03

标签: uml

作为将旧Java应用程序重写为C#的一部分,我正在编写软件设计规范。我遇到的一个问题是当一个方法过于简单而无法使用序列图时(它不与其他对象交互)。

作为一个例子,我有一个名为Item的简单POJO,包含以下方法:

public String getCategoryKey() {
    StringBuffer value = new StringBuffer("s-");
    value.append(this.getModelID());
    value.append("-c");
    return value;
}

需要记录该方法的目的和算法。但是,序列图是过度的。别人怎么记录它?

(对于给定的方法,我没有信任/责备,这是非常古老的代码,作者“忘记”将他们的名字放在Javadoc中。)

2 个答案:

答案 0 :(得分:2)

你遇到的问题是序列图用于描述消息序列,但正如你所指出的那样,序列不够有趣,不能用序列图来描述。

您拥有的另一个选项是交互图,它不描述序列,但是交互对象,但是,这对您来说可能不那么重要 - 交互中没有多少参与者,而StringBuilder不是您系统的重要组成部分我想。

您也可以使用状态图,这对描述状态机非常有用,但是您的对象不会通过您的方法更改其状态。

在我看来,你所拥有的是获得CategoryKey的活动。首先,您创建一个前缀,而不是添加方法名称,然后添加后缀。所以我认为活动图可能比你的情况下的序列图更有用。

但是,您的方法非常简单,可能不需要任何图形UML文档。关于你的方法的重要的事情似乎是它是一个查询 - 没有状态被改变,它返回一个带有前缀,主要部分和后缀的字符串。这可以使用后置条件轻松描述。为此,您可以轻松地使用Javadoc描述作为返回值,或者如果您想更精确,可以使用OCL语言(UML堆栈的一部分)来描述后置条件。

答案 1 :(得分:0)

您是否计划发布API文档以及UML文档?我发现UML图非常适合描述系统的几个部分之间的高级设计和交互。像您描述的方法这样的小细节似乎更适合API文档甚至内联注释。

由于您正在移植到.NET,是否已检查Sandcastle以从代码中的XML注释生成帮助文件?

如果您确实想在UML图中添加这样的小细节,我想我会在类图中为类添加一个注释,以简要描述该方法的工作原理。