Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法为groovy或python等动态脚本语言规划和绘制架构图?_Python_Architecture_Groovy_Uml_Dynamic Languages - Fatal编程技术网

有没有办法为groovy或python等动态脚本语言规划和绘制架构图?

有没有办法为groovy或python等动态脚本语言规划和绘制架构图?,python,architecture,groovy,uml,dynamic-languages,Python,Architecture,Groovy,Uml,Dynamic Languages,假设我想用groovy编写一个大型应用程序,并利用闭包、类别和其他概念(我经常使用这些概念来分离关注点)。有没有一种方法可以用图表或其他简单的方式来传达这些东西的架构?例如,如何详细说明闭包映射可能执行的操作(无详细文档)?我知道动态语言功能通常不会被大规模推荐,因为它们被视为复杂的功能,但必须如此吗?如果你不想生成冗长的文档,一张图片抵得上千言万语。我发现像这样的工具很有用,既可以用来澄清我的想法,也可以用来与他人交流。如果您愿意投资于中等(或至少更高)级别的文档,我建议您。它非常易于使用,尽

假设我想用groovy编写一个大型应用程序,并利用闭包、类别和其他概念(我经常使用这些概念来分离关注点)。有没有一种方法可以用图表或其他简单的方式来传达这些东西的架构?例如,如何详细说明闭包映射可能执行的操作(无详细文档)?我知道动态语言功能通常不会被大规模推荐,因为它们被视为复杂的功能,但必须如此吗?

如果你不想生成冗长的文档,一张图片抵得上千言万语。我发现像这样的工具很有用,既可以用来澄清我的想法,也可以用来与他人交流。如果您愿意投资于中等(或至少更高)级别的文档,我建议您。它非常易于使用,尽管它面向Python模块的文档,但它可以生成完全通用的文档,看起来既专业又简单。您的文档可以包含使用创建的图表。

如果您不想生成冗长的文档,一张图片抵得上千言万语。我发现像这样的工具很有用,既可以用来澄清我的想法,也可以用来与他人交流。如果您愿意投资于中等(或至少更高)级别的文档,我建议您。它非常易于使用,尽管它面向Python模块的文档,但它可以生成完全通用的文档,看起来既专业又简单。您的文档可以包含使用UML创建的图表。

UML并不能很好地处理这些事情,但是如果您愿意做一些心理映射,您仍然可以使用它来传达您的设计。您可以找到大多数动态概念和UMLs静态对象模型之间的同构关系

例如,您可以将闭包看作是实现一个方法接口的对象。将这样的接口建模为比接口可调用的{call(args[0..*]:Object):Object}更具体一些的东西可能很有用

Duck类型同样可以作为一个接口。如果您有一个方法可以接受一些可以嘎嘎作响的东西,那么将其建模为接受一个对象,该对象是接口_interfacequackable{quack()}的特化

你可以将你的想象力用于其他概念。请记住,设计图的目的是交流想法。因此,不要过于迂腐地100%建模,想想你想让你的图表说什么,确保他们这样说,并消除任何会稀释信息的无关细节。如果你使用了一些对你的目标受众来说并不明显的概念,解释它们


另外,如果UML真的不能处理您想说的话,那么尝试其他方法来可视化您的消息。UML只是一个很好的选择,因为它为您提供了一个通用词汇表,所以您不必解释图表上的每个概念。

UML不太适合处理这些事情,但如果您愿意做一些心理映射,您仍然可以使用它来传达您的设计。您可以找到大多数动态概念和UMLs静态对象模型之间的同构关系

例如,您可以将闭包看作是实现一个方法接口的对象。将这样的接口建模为比接口可调用的{call(args[0..*]:Object):Object}更具体一些的东西可能很有用

Duck类型同样可以作为一个接口。如果您有一个方法可以接受一些可以嘎嘎作响的东西,那么将其建模为接受一个对象,该对象是接口_interfacequackable{quack()}的特化

你可以将你的想象力用于其他概念。请记住,设计图的目的是交流想法。因此,不要过于迂腐地100%建模,想想你想让你的图表说什么,确保他们这样说,并消除任何会稀释信息的无关细节。如果你使用了一些对你的目标受众来说并不明显的概念,解释它们


另外,如果UML真的不能处理您想说的话,那么尝试其他方法来可视化您的消息。UML只是一个不错的选择,因为它为您提供了一个通用词汇表,所以您不必解释图表上的每个概念。

+1始终使用UML。它可以描述软件的所有方面,包括闭包(毕竟它们只是对象)+1始终使用UML。它可以描述软件的所有方面,包括闭包(毕竟它们只是对象)虽然花了一些时间,但我还是尝试了FreeMind。结果证明它非常有用(我喜欢键盘导航如此直观)。结果真的很可怕,但如果你不介意你的文档看起来像垃圾,那么你最终会得到一些很容易理解的东西。这花了一些时间,但我尝试了FreeMind。结果证明它非常有用(我喜欢键盘导航如此直观)。结果真的很可怕,但如果你不介意你的文档看起来像垃圾,那么你最终会得到一些很容易理解的东西。