language-agnostic - 程序结构设计工具? (自上而下的设计)

标签 language-agnostic design-patterns

我一直在寻求扩展我的方法以更好地涉及单元测试,并且我偶然发现了行为驱动设计(即 Cucumber 和其他一些)。我对这个概念很感兴趣,因为我从来没有能够自上而下地正确设计,只是因为如果没有一个像样的方式来记录设计,就会失去对设计的跟踪。

所以在这一点上,以一种主要与语言无关的方式,有没有我(可能)不知道的有用工具?例如,我经常尝试为我的程序构建流程图,但我不确定这会有多大帮助,而且我似乎有点困惑如何制作一个足够复杂的流程图来处理程序的逻辑完整的程序及其所有功能......即,流程图似乎在设计方案中受到限制......或者可能增长到无法维护的规模。 BDD 方法很好,但是对于一个与结构如此紧密联系的系统,将语言和单元测试联系起来似乎是必须的(因为它是值得的)并且似乎很难找到可以工作的东西 使用 Python 和 Java(我的两种主要语言)。

所以无论如何..在那个笔记上,任何评论都非常感谢。我在这里搜索过,似乎自上而下的设计是一个讨论得很好的话题,但我没有看到太多对工具本身的引用,例如流程图程序等。我在 Linux 上,如果这很重要(在程序的情况)。

最佳答案

这真是个好问题。 BDD 和 TDD 以及敏捷一般不会说你不能做预先设计,他们只是说不要设计超过你需要的 - 尽可能晚地推迟任何决定。我相信有一组您知道的工具,正是用于此目的,它被称为 UML:)。当你暗示努力方面时,你是绝对正确的。只要 UML 图只是图片,它们就会成为开发过程中被丢弃的浪费和维护负担,当事情可能会很快发生变化时。但是,您可以使用一些 CASE 工具,它允许您(经过数月的咒骂:D...)创建图表,可用于生成代码,当您需要在模型级别更改某些内容时,只需更改图表并重新生成(这实际上需要一些架构和事先工作,看看一些模型驱动的方法)。我认为在这方面是最好的,应该是中间的。一些东西,这将使您能够轻松建模(绘制和维护图表、流程图、状态机...)并允许您生成代码。我认为最好的方法是(外部)领域特定语言。
例如。您可以使用 Xtext 等工具为状态机创建语言并为它们生成代码,例如根据 GoF 状态模式(或者您可以使用 SMC 工具,它仅对状态机执行此操作)来实现业务规则。将它与 BDD 结合起来,您可以轻松发现一些问题,并且可以轻松更改规则而不会损坏现有代码(感谢设计模式)。
我在硕士论文中的目标是创建许多 DSL 的集合,这将使您能够以 BDD 方式描述与应用程序的交互,但将允许您不仅生成像 Cucumber 这样的测试,还生成(部分)应用程序布局(如果你想在某个页面上看到一个按钮,显然,在那个页面上你想要那个按钮......)。您还可以与一些领域对象进行交互,这些对象可以根据使用的架构进行建模,例如领域驱动设计风格。我认为这是非常现实的,然后建模真的很值得。对于自上而下的设计,您需要某种抽象来从上到下移动,因此需要预先进行一些设计。

关于language-agnostic - 程序结构设计工具? (自上而下的设计),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2534274/

相关文章:

math - float 学坏了吗?

java - 由于超时而安全取消线程

OOP 设计问题

django - 带有父 url 参数的自定义 Django 管理站点

algorithm - 删除数字的低位数字

algorithm - 生成唯一的排序排列

math - float 学有问题吗?

regex - 生成最佳的正则表达式匹配

design-patterns - Controller 逻辑与服务/业务层逻辑

c# - 使用静态或非静态类