我要写一个事件相关器。系统的一个基本部分将是一个巨大的决策树,它根据记录的状态和日志文件识别故障的起源,其中一个主要问题是保持该树的可维护性 - 以程序员易于理解和可编辑的格式编写.
由于 7 层深嵌套的 if()s 不是我的“可维护和易于理解”的想法,我询问了如何以一种介于机器友好、用户友好和成本效益。显而易见的答案是使用可编译为 C++ 的特定领域语言,其中将编写实际的事件相关器。显而易见的问题是 DSL 应该是什么样子。
我最喜欢的建议是使用 UML 活动图,并将其编译为 C++。该图可能几乎完全由决策组成,活动仅在树的叶子上,作为决策过程得出的结论。本质上,该图是我的图形 DSL,然后应该在 C++ 中编译成一大堆 if()。虽然我仍然需要手工制作所有条件函数,但至少条件之间的互连应该由系统处理。
现在,我应该使用什么工具来创建该图表?
由于“自己动手”不是我对成本效益的想法,考虑到它最终是为一台设备创建一个单一的图表(即使它可能会被永远编辑,因为发现了新的故障模式),我有查看统一建模语言工具列表。
其中相当多的,包括在“生成的语言”中列出了“C++”的那些,但我知道现实从来没有那么好——我对一堆根据类定义预先填充的头文件不感兴趣类图。我需要一个包含我的决策树的文件;一堆条件语句,其条件预先填充了决策函数调用,我将手动编写这些语句,并将结果作为特定的结论函数调用。
现在我的问题是,哪些工具可以做到这一点,使用起来不会太难,而且价格也不贵——首选免费工具,但价格合理的商业工具也可以。
或者,如果失败了 - 哪些可以将该图表保存为我可以用自制的“编译器”解析的形式,以及如何创建该编译器。
当然也欢迎其他建议 - 也许是可以生成此类代码的老式流程图的工具?也许已经存在专门的 DSL 来创建我需要的东西?