作为将旧Java应用程序重写为C#的一部分,我正在编写软件设计规范。我遇到的一个问题是当一个方法过于简单而无法使用序列图时(它不与其他对象交互)。
作为一个例子,我有一个名为Item的简单POJO,包含以下方法:
public String getCategoryKey() {
StringBuffer value = new StringBuffer("s-");
value.append(this.getModelID());
value.append("-c");
return value;
}
需要记录该方法的目的和算法。但是,序列图是过度的。别人怎么记录它?
(对于给定的方法,我没有信任/责备,这是非常古老的代码,作者“忘记”将他们的名字放在Javadoc中。)
答案 0 :(得分:2)
你遇到的问题是序列图用于描述消息序列,但正如你所指出的那样,序列不够有趣,不能用序列图来描述。
您拥有的另一个选项是交互图,它不描述序列,但是交互对象,但是,这对您来说可能不那么重要 - 交互中没有多少参与者,而StringBuilder不是您系统的重要组成部分我想。
您也可以使用状态图,这对描述状态机非常有用,但是您的对象不会通过您的方法更改其状态。
在我看来,你所拥有的是获得CategoryKey的活动。首先,您创建一个前缀,而不是添加方法名称,然后添加后缀。所以我认为活动图可能比你的情况下的序列图更有用。
但是,您的方法非常简单,可能不需要任何图形UML文档。关于你的方法的重要的事情似乎是它是一个查询 - 没有状态被改变,它返回一个带有前缀,主要部分和后缀的字符串。这可以使用后置条件轻松描述。为此,您可以轻松地使用Javadoc描述作为返回值,或者如果您想更精确,可以使用OCL语言(UML堆栈的一部分)来描述后置条件。
答案 1 :(得分:0)
您是否计划发布API文档以及UML文档?我发现UML图非常适合描述系统的几个部分之间的高级设计和交互。像您描述的方法这样的小细节似乎更适合API文档甚至内联注释。
由于您正在移植到.NET,是否已检查Sandcastle以从代码中的XML注释生成帮助文件?
如果您确实想在UML图中添加这样的小细节,我想我会在类图中为类添加一个注释,以简要描述该方法的工作原理。