Answers:
当我在编码之前创建它们时,我们将它们视为“临时”文档。就是说,我们创建了图表并把想法写到了纸上。我们从这些类图开始编码。然后我们将它们丢弃。一旦编码开始,花时间去维护它们是不值得的。而且,如果您需要最新的类模型,请使用工具从代码中创建它们。
无论哪种情况,它们都将作为文档的一部分保留下来。更改实现后,没有人会更新它们。图表上没有日期,因此您甚至都不知道它们所引用的代码的版本。当一个新人被添加到项目中时,您将给他或她一个图表,说:“这是在设计或实现过程中的某个时刻创建的一些图表。我们不知道它们是最新的。”
这取决于设计的深度。有些人甚至坚持为最琐碎的类编写类图,因为“这是一种很好的做法”。我认为当您已经确切地知道如何实现时,画一些东西是浪费时间。在创建新设计时,有些陌生的事情,首先绘制一些图表绝对有用。
不过,我从未使用过UML工具,因为设计通常会在实现过程中发生很大变化,以至于我不得不重绘该图。我想一个好的双向工具可以处理这些更改,但是我从未使用过一个好的工具(不过,我只使用了免费的工具)。相反,我在纸上或白板上绘画以帮助我对设计进行排序。在实现它并合理确定它的声音之后,我将做一个更正式的图表。
另外,我们不要忘记其他类型的图。我一直发现序列图是最有用的,并且在组件之间进行大量通信时,我经常使用它们。
类模型的创建应该在模型创建期间,之后进行,因为模型应该与代码交互并修改需求。首先,您需要创建一个类图来启动您的项目。这将有助于在更高级别的对象上可视化对象。您将能够创建稳定且智能的软件体系结构。然后,您需要编写代码,有时您会注意到,在代码中实际上不可能实现在UML中看起来不错的体系结构。然后,您更改代码和体系结构。最后,通过代码修改来更新模型并生成文档。
在我的上一个项目中,决策者在去年对我的要求进行了50多次更改。这真的很痛苦,UML帮助我保持更改的可追溯性以及原因。UML应该允许模型和代码在任何时候以迭代的方式合并(例如,从代码到模型,从模型到代码,从两者,从重构后的代码等等)。我为Helios使用了Omondo EclipseUML,我真的很满意这个工具。我最喜欢的功能是模型合并,它使我可以随时更新模型而不会丢失模型信息。我也喜欢直接在类图中建模的实体,并使用构造型和休眠方式创建数据库。从对象到数据库,真正强大而完整!
使用Eiffel和相关工具,这只是观点不同,它们都指向相同的基础文件。