我正在寻找重构一些非常复杂的代码,这是我在工作中的一个项目的子系统。我对这段代码的部分研究是它非常复杂,并且根据一些核心业务逻辑包含了大量的输入,中间值和输出。矩阵代数设计分解
我想重新设计这个代码,以便更容易维护以及更快速地执行一个地狱,因此,我一直在试图查看每个参数以及它们彼此之间的依赖关系。这导致了一个相当大和纠结的图,我想要一个机制来简化这个图。
后来我在一本关于SOA设计的书中遇到了一种叫做“矩阵设计分解”的技术,它使用输出矩阵和它们对输入的依赖关系,应用某种形式的矩阵代数并可以生成业务流程这些依赖关系的图表。
我知道有一个web工具可以在http://www.designdecomposition.com/但是它可以有输入/输出依赖关系的数量有限。我试图寻找这个工具的算法源(所以我可以尝试自己实现它没有大小限制),但是我没有运气。
有没有人知道我可以使用的类似技术?目前,我甚至考虑采取相关矩阵,并运用一些遗传算法,看看是否能演变拿出一个简单的工作流程...
干杯,
Aidos
编辑:
我将解释动机:
最初的代码是为系统编写的,每次用户执行操作(添加,删除或修改某些属性的值(约60)一个项目)。这个代码是十年前编写的,绝对显示出年龄的迹象 - 其他人已经为系统增加了更复杂的计算,现在我们得到完全不合理的性能(控制返回给用户前2分钟)。已决定从用户操作中分离计算并提供一个按钮来“重新计算”这些值。
我的问题出现了,因为有太多的计算正在进行,它们基于所有必需数据都可用于计算的假设 - 现在,当我尝试重新实现计算时,我一直遇到问题,因为我没有得到这个计算所依赖的不同计算结果。
这是我想使用矩阵分解方法的地方。 MD方法允许我指定所有的输入和输出,并为我提供了可用于生成所有输出的“最简单”工作流程。
然后我可以使用这个“工作流”来了解我需要执行的计算的优先级,以获得相同的结果而不会产生任何异常。它还向我展示了我可以并行化的计算系统的哪些部分以及分叉点和连接点的位置(我现在不担心该部分)。目前,我所拥有的是一个疯狂的大型矩阵,其中显示出很多依赖关系,不知从哪里开始。
我会阐述从我的评论多了几分:
我不想使用来自EA过程中的解决方案在实际的项目。我想采用依赖矩阵并将其分解为模块,然后我将手动进行编码 - 这纯粹是一种设计辅助 - 我只是对这些模块的输入/输出感兴趣。基本上是这些计算之间复杂的相互依赖关系的表示,以及一些优先的概念。
说我有A要求B和C. D要求A和E. F要求B,A和E,我想要有效地将问题空间从一组复杂的依赖关系划分为一个“工作流程”,我可以检查以获得更好的理解。一旦我有了这个理解,我可以想出一个更好的设计/实现,仍然是人类可读的,所以对于我所知道的例子,我需要计算A,然后C,然后D,然后F.计算出
-
我知道这似乎有点奇怪,如果你看看我链接到基于矩阵的分解之前的网站,应该给你一些理解我在想什么...
我已经详细阐述了一些内容,希望澄清一下我在做,为什么。 – Aidos 2009-04-30 07:03:56