在设计新代码和算法时我应该使用UML吗?

pet*_*ust 5 uml

我正在设计一个新系统,发现我正在努力解决我想做的事情.一个症状是,每次我重新解决问题时,我都必须尝试在纸上绘制组件的关系.(我不清楚这些组件究竟是什么或关系是什么 - 例如我设法删除了一个没有做任何事情的组件).

UML是一种有用的前进方式吗?我曾经非常怀疑并尝试早期版本,其中生产版本花费太多钱.现在我看到有Netbeans中的一个插件,它特别有模式的一个很好的选择(就凭这可能会使它值得的).

我已经阅读了SO上的大多数顶级帖子,似乎没有一个非常明确的共识.我的背景是,这与研究有关,而不是为客户编码,因此主要目的不是记录最终产品,而是帮助清除我的想法(并可能编写一些简单的结构).

如果任何答案支持UML,那么建议生产需要多长时间以及使用它的频率将是有用的.(作为参考,我每天都使用测试,记录器和调试器).

补充是否有任何UML软件可以强制执行代码和图表之间的一致性(在任何级别).我假设,当创建一个StrategyPattern时,它可以生成存根代码.但是,如果模式被破坏,那么代码是否可以被包含在内,UML工具会检测到这个?

sor*_*oru 9

当他说有三种使用UML的方法时,Martin Fowler就是IMHO:

听起来你大多倾向于第一个,而第二个的顺序.选择一个并相应地设定您的期望肯定会有所帮助 - 您不能指望在3分钟内执行草图或生成可执行的蓝图.

它是否适合你取决于一堆事情,如:

  • 作为一个思想家你是多么直观:人们在这方面的变化很大.
  • 您是否可以免费或从预算中获得有效的工具.
  • 是否需要将设计传达给其他人
  • 如果您正在有效地使用其他一些设计方法(例如测试驱动设计).


rao*_*son 5

UML 不会使您的代码变得更好,但可以改善您对正在做的事情的看法。

这不是关于 UML 对编写代码是否有用,而是关于UML 的真正目的,使您能够描绘出您想要做什么,系统是什么样子

你需要一个比喻,一个故事来传达你的工作。稍后加入该项目的开发人员将需要它来更好地理解您的代码,在查看细节时拥有正确的上下文并最终不破坏内容。

不要让自己被工具愚弄。UML 本身并不是一个解决方案,它只是解决一个常见问题的一种形式化方法:编写声音系统。